/* * Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com) * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestContentQueryManager.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.cmf.dam; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.net.URL; import java.util.Arrays; import java.util.Iterator; import java.util.List; import junit.framework.TestCase; import com.uwyn.rife.cmf.MimeType; import com.uwyn.rife.cmf.dam.contentmanagers.DatabaseContent; import com.uwyn.rife.cmf.dam.contentmanagers.DatabaseContentFactory; import com.uwyn.rife.cmf.dam.contentmanagers.DatabaseContentInfo; import com.uwyn.rife.cmf.dam.exceptions.*; import com.uwyn.rife.config.RifeConfig; import com.uwyn.rife.database.Datasource; import com.uwyn.rife.database.DbQueryManager; import com.uwyn.rife.database.queries.Select; import com.uwyn.rife.database.querymanagers.generic.GenericQueryManager; import com.uwyn.rife.database.querymanagers.generic.GenericQueryManagerFactory; import com.uwyn.rife.resources.ResourceFinderClasspath; import com.uwyn.rife.tools.FileUtils; import com.uwyn.rife.tools.exceptions.InnerClassException; import com.uwyn.rife.tools.exceptions.FileUtilsErrorException; public class TestContentQueryManager extends TestCase { private Datasource mDatasource = new Datasource(); public TestContentQueryManager(Datasource datasource, String datasourceName, String name) { super(name); mDatasource = datasource; } public void setUp() throws Exception { DatabaseContentFactory.getInstance(mDatasource).install(); } public void tearDown() throws Exception { DatabaseContentFactory.getInstance(mDatasource).remove(); } public void testInstantiation() { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); assertNotNull(manager); assertNotNull(manager.getContentManager()); assertTrue(manager.getContentManager() instanceof ContentManager); } public void testBuildCmfPathBean() throws Exception { ContentImage content = new ContentImage() .name("the content name"); content .setId(3); ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); assertEquals("/contentimage/3/image", manager.buildCmfPath(content, "image")); } public void testBuildCmfPathId() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); assertEquals("/contentimage/4/image", manager.buildCmfPath(4, "image")); } public void testBuildCmfPathBeanRepository() throws Exception { ContentImageRepository content = new ContentImageRepository() .name("the content name"); content .setId(3); ContentQueryManager<ContentImageRepository> manager = new ContentQueryManager<ContentImageRepository>(mDatasource, ContentImageRepository.class); assertEquals("testrep:/contentimagerepository/3/image", manager.buildCmfPath(content, "image")); } public void testBuildCmfPathIdRepository() throws Exception { ContentQueryManager<ContentImageRepository> manager = new ContentQueryManager<ContentImageRepository>(mDatasource, ContentImageRepository.class); assertEquals("testrep:/contentimagerepository/4/image", manager.buildCmfPath(4, "image")); } public void testBuildServeContentPathBean() throws Exception { ContentImage content = new ContentImage() .name("the content name"); content .setId(3); ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); assertEquals("/contentimage/3/image", manager.buildServeContentPath(content, "image")); } public void testBuildServeContentPathId() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); assertEquals("/contentimage/4/image", manager.buildServeContentPath(4, "image")); } public void testBuildServeContentPathBeanRepository() throws Exception { ContentImageRepository content = new ContentImageRepository() .name("the content name"); content .setId(3); ContentQueryManager<ContentImageRepository> manager = new ContentQueryManager<ContentImageRepository>(mDatasource, ContentImageRepository.class); assertEquals("/contentimagerepository/3/image", manager.buildServeContentPath(content, "image")); } public void testBuildServeContentPathIdRepository() throws Exception { ContentQueryManager<ContentImageRepository> manager = new ContentQueryManager<ContentImageRepository>(mDatasource, ContentImageRepository.class); assertEquals("/contentimagerepository/4/image", manager.buildServeContentPath(4, "image")); } public void testSaveContent() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImage content = new ContentImage() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(id >= 0); DatabaseContent content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "image"); GenericQueryManager<ContentImage> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentImage.class); ContentImage restored = gqm.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); assertNull(restored.getImage()); DatabaseContentInfo info = content_manager.getContentInfo(path); assertEquals(id, info.getContentId()); assertEquals(MimeType.IMAGE_PNG, info.getMimeType()); assertEquals("myimage.png", info.getName()); URL image_resource_png = ResourceFinderClasspath.getInstance().getResource("uwyn.png"); final byte[] data_image_png = FileUtils.readBytes(image_resource_png); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertTrue(Arrays.equals(data_image_png, (byte[])contentData)); return null; } }); } finally { manager.remove(); } } public void testSaveContentOtherTable() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class, "othercontentimage"); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImage content = new ContentImage() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(id >= 0); DatabaseContent content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "image"); assertTrue(path.startsWith("/contentimage/")); GenericQueryManager<ContentImage> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentImage.class, "othercontentimage"); ContentImage restored = gqm.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); assertNull(restored.getImage()); assertEquals(1, new DbQueryManager(mDatasource) .executeGetFirstInt(new Select(mDatasource) .field("count(*)") .from("othercontentimage"))); DatabaseContentInfo info = content_manager.getContentInfo(path); assertEquals(id, info.getContentId()); assertEquals(MimeType.IMAGE_PNG, info.getMimeType()); assertEquals("myimage.png", info.getName()); URL image_resource_png = ResourceFinderClasspath.getInstance().getResource("uwyn.png"); final byte[] data_image_png = FileUtils.readBytes(image_resource_png); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertTrue(Arrays.equals(data_image_png, (byte[])contentData)); return null; } }); } finally { manager.remove(); } } public void testSaveContentRepository() throws Exception { ContentQueryManager<ContentImageRepository> manager = new ContentQueryManager<ContentImageRepository>(mDatasource, ContentImageRepository.class); manager.install(); manager.getContentManager().createRepository("testrep"); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImageRepository content = new ContentImageRepository() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(id >= 0); checkContentRepository(id, "testrep"); DatabaseContent content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "image"); assertTrue(path.startsWith("testrep:")); GenericQueryManager<ContentImageRepository> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentImageRepository.class); ContentImageRepository restored = gqm.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); assertNull(restored.getImage()); DatabaseContentInfo info = content_manager.getContentInfo(path); assertEquals(id, info.getContentId()); assertEquals(MimeType.IMAGE_PNG, info.getMimeType()); assertEquals("myimage.png", info.getName()); URL image_resource_png = ResourceFinderClasspath.getInstance().getResource("uwyn.png"); final byte[] data_image_png = FileUtils.readBytes(image_resource_png); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertTrue(Arrays.equals(data_image_png, (byte[])contentData)); return null; } }); } finally { manager.remove(); } } public void testSaveContentRaw() throws Exception { ContentQueryManager<ContentRaw> manager = new ContentQueryManager<ContentRaw>(mDatasource, ContentRaw.class); manager.install(); try { int size = 1024*1024*4; // 4Mb final byte[] raw = new byte[size]; for (int i = 0; i < size; i++) { raw[i] = (byte)(i%255); } ContentRaw content = new ContentRaw() .name("the content name") .raw(new ByteArrayInputStream(raw)); int id = manager.save(content); assertTrue(id >= 0); DatabaseContent content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "raw"); GenericQueryManager<ContentRaw> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentRaw.class); ContentRaw restored = gqm.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); assertNull(restored.getRaw()); DatabaseContentInfo info = content_manager.getContentInfo(path); assertEquals(id, info.getContentId()); assertEquals(MimeType.RAW, info.getMimeType()); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { try { assertTrue(Arrays.equals(raw, FileUtils.readBytes((InputStream)contentData))); } catch (FileUtilsErrorException e) { throwException(e); } return null; } }); } finally { manager.remove(); } } public void testSaveContentUpdate() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImage content = new ContentImage() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(id >= 0); URL rife_resource_tif= ResourceFinderClasspath.getInstance().getResource("rife-logo_small.tif"); byte[] rife_image_tif = FileUtils.readBytes(rife_resource_tif); content .name("updated content name") .image(rife_image_tif); manager.save(content); DatabaseContent content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "image"); GenericQueryManager<ContentImage> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentImage.class); ContentImage restored = gqm.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); assertNull(restored.getImage()); DatabaseContentInfo info = content_manager.getContentInfo(path); assertEquals(id+1, info.getContentId()); assertEquals(MimeType.IMAGE_PNG, info.getMimeType()); URL rife_resource_png = ResourceFinderClasspath.getInstance().getResource("rife-logo_small.png"); final byte[] rife_image_png = FileUtils.readBytes(rife_resource_png); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertTrue(Arrays.equals(rife_image_png, (byte[])contentData)); return null; } }); } finally { manager.remove(); } } public void testSaveContentUpdateRepository() throws Exception { ContentQueryManager<ContentImageRepository> manager = new ContentQueryManager<ContentImageRepository>(mDatasource, ContentImageRepository.class); manager.install(); manager.getContentManager().createRepository("testrep"); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImageRepository content = new ContentImageRepository() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(id >= 0); checkContentRepository(id, "testrep"); URL rife_resource_tif= ResourceFinderClasspath.getInstance().getResource("rife-logo_small.tif"); byte[] rife_image_tif = FileUtils.readBytes(rife_resource_tif); content .name("updated content name") .image(rife_image_tif); manager.save(content); DatabaseContent content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "image"); assertTrue(path.startsWith("testrep:")); GenericQueryManager<ContentImageRepository> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentImageRepository.class); ContentImageRepository restored = gqm.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); assertNull(restored.getImage()); DatabaseContentInfo info = content_manager.getContentInfo(path); assertEquals(id+1, info.getContentId()); assertEquals(MimeType.IMAGE_PNG, info.getMimeType()); checkContentRepository(info.getContentId(), "testrep"); URL rife_resource_png = ResourceFinderClasspath.getInstance().getResource("rife-logo_small.png"); final byte[] rife_image_png = FileUtils.readBytes(rife_resource_png); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertTrue(Arrays.equals(rife_image_png, (byte[])contentData)); return null; } }); } finally { manager.remove(); } } public void testSavePojo() throws Exception { ContentQueryManager<RegularPojo> manager = new ContentQueryManager<RegularPojo>(mDatasource, RegularPojo.class); manager.install(); try { RegularPojo content = new RegularPojo() .name("the regular pojo name"); int id = manager.save(content); assertTrue(id >= 0); GenericQueryManager<RegularPojo> gqm = GenericQueryManagerFactory.getInstance(mDatasource, RegularPojo.class); RegularPojo restored = gqm.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); } finally { manager.remove(); } } public void testStoreEmptyContent() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImage content = new ContentImage() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(id >= 0); DatabaseContent content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "image"); assertTrue(content_manager.hasContentData(path)); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertNotNull(contentData); return null; } }); assertTrue(manager.storeEmptyContent(content, "image")); GenericQueryManager<ContentImage> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentImage.class); ContentImage restored = gqm.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); assertNull(restored.getImage()); DatabaseContentInfo info = content_manager.getContentInfo(path); assertEquals(id+1, info.getContentId()); assertEquals(MimeType.IMAGE_PNG, info.getMimeType()); assertFalse(content_manager.hasContentData(path)); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertNull(contentData); return null; } }); } finally { manager.remove(); } } public void testStoreEmptyContentRepository() throws Exception { ContentQueryManager<ContentImageRepository> manager = new ContentQueryManager<ContentImageRepository>(mDatasource, ContentImageRepository.class); manager.install(); manager.getContentManager().createRepository("testrep"); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImageRepository content = new ContentImageRepository() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(id >= 0); checkContentRepository(id, "testrep"); DatabaseContent content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "image"); assertTrue(path.startsWith("testrep:")); assertTrue(content_manager.hasContentData(path)); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertNotNull(contentData); return null; } }); assertTrue(manager.storeEmptyContent(content, "image")); GenericQueryManager<ContentImageRepository> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentImageRepository.class); ContentImageRepository restored = gqm.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); assertNull(restored.getImage()); DatabaseContentInfo info = content_manager.getContentInfo(path); assertEquals(id+1, info.getContentId()); assertEquals(MimeType.IMAGE_PNG, info.getMimeType()); assertFalse(content_manager.hasContentData(path)); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertNull(contentData); return null; } }); } finally { manager.remove(); } } private void checkContentRepository(int id, String repository) { assertEquals(repository, new DbQueryManager(mDatasource).executeGetFirstString(new Select(mDatasource) .from(RifeConfig.Cmf.getTableContentInfo()+" i") .join(RifeConfig.Cmf.getTableContentRepository()+" r") .field("r.name") .where("contentId", "=", id) .whereAnd("i.repositoryId = r.repositoryId"))); } public void testStoreEmptyContentIllegalArguments() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { try { manager.storeEmptyContent(null, "image"); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } try { manager.storeEmptyContent(new ContentImage(), null); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } try { manager.storeEmptyContent(new ContentImage(), ""); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } } finally { manager.remove(); } } public void testStoreEmptyContentPojo() throws Exception { ContentQueryManager<RegularPojo> manager = new ContentQueryManager<RegularPojo>(mDatasource, RegularPojo.class); manager.install(); try { RegularPojo content = new RegularPojo() .name("the regular pojo name"); assertFalse(manager.storeEmptyContent(content, "name")); } finally { manager.remove(); } } public void testStoreEmptyContentMissingIdentifier() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { try { manager.storeEmptyContent(new ContentImage(), "image"); fail(); } catch (MissingIdentifierValueException e) { assertSame(ContentImage.class, e.getBeanClass()); assertEquals("id", e.getIdentifierName()); } } finally { manager.remove(); } } public void testStoreEmptyContentUnknownProperty() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImage content = new ContentImage() .name("the content name") .image(data_image_gif); manager.save(content); try { manager.storeEmptyContent(content, "imageunknown"); fail(); } catch (UnknownConstrainedPropertyException e) { assertSame(ContentImage.class, e.getBeanClass()); assertEquals("imageunknown", e.getProperty()); } } finally { manager.remove(); } } public void testStoreEmptyContentMimeTypeExpected() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImage content = new ContentImage() .name("the content name") .image(data_image_gif); manager.save(content); try { manager.storeEmptyContent(content, "name"); fail(); } catch (ExpectedMimeTypeConstraintException e) { assertSame(ContentImage.class, e.getBeanClass()); assertEquals("name", e.getProperty()); } } finally { manager.remove(); } } public void testDeleteContent() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImage content = new ContentImage() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(id >= 0); assertTrue(manager.delete(id)); ContentManager content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "image"); GenericQueryManager<ContentImage> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentImage.class); assertNull(gqm.restore(id)); assertNull(content_manager.getContentInfo(path)); assertFalse(content_manager.hasContentData(path)); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertNull(contentData); return null; } }); } finally { manager.remove(); } } public void testDeleteContentRepository() throws Exception { ContentQueryManager<ContentImageRepository> manager = new ContentQueryManager<ContentImageRepository>(mDatasource, ContentImageRepository.class); manager.install(); manager.getContentManager().createRepository("testrep"); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImageRepository content = new ContentImageRepository() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(id >= 0); checkContentRepository(id, "testrep"); assertTrue(manager.delete(id)); ContentManager content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "image"); assertTrue(path.startsWith("testrep:")); GenericQueryManager<ContentImageRepository> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentImageRepository.class); assertNull(gqm.restore(id)); assertNull(content_manager.getContentInfo(path)); assertFalse(content_manager.hasContentData(path)); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertNull(contentData); return null; } }); } finally { manager.remove(); } } public void testDeleteContentNonCmfProperty() throws Exception { ContentQueryManager<ContentImageNonCmfProps> manager = new ContentQueryManager<ContentImageNonCmfProps>(mDatasource, ContentImageNonCmfProps.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImageNonCmfProps content = new ContentImageNonCmfProps() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(id >= 0); assertTrue(manager.delete(id)); ContentManager content_manager = DatabaseContentFactory.getInstance(mDatasource); String path = manager.buildCmfPath(content, "image"); GenericQueryManager<ContentImageNonCmfProps> gqm = GenericQueryManagerFactory.getInstance(mDatasource, ContentImageNonCmfProps.class); assertNull(gqm.restore(id)); assertNull(content_manager.getContentInfo(path)); assertFalse(content_manager.hasContentData(path)); content_manager.useContentData(path, new ContentDataUser() { public Object useContentData(Object contentData) throws InnerClassException { assertNull(contentData); return null; } }); } finally { manager.remove(); } } public void testDeletePojo() throws Exception { ContentQueryManager<RegularPojo> manager = new ContentQueryManager<RegularPojo>(mDatasource, RegularPojo.class); manager.install(); try { RegularPojo content = new RegularPojo() .name("the regular pojo name"); int id = manager.save(content); assertTrue(id >= 0); assertTrue(manager.delete(id)); GenericQueryManager<RegularPojo> gqm = GenericQueryManagerFactory.getInstance(mDatasource, RegularPojo.class); assertNull(gqm.restore(id)); } finally { manager.remove(); } } public void testDeleteOrdinal() throws Exception { ContentQueryManager<Ordered> manager = new ContentQueryManager<Ordered>(mDatasource, Ordered.class); manager.install(); try { Ordered content1 = new Ordered() .name("the content name"); int id1 = manager.save(content1); assertTrue(id1 >= 0); Ordered content2 = new Ordered() .name("another content name"); int id2 = manager.save(content2); assertTrue(id2 > id1); Ordered content3 = new Ordered() .name("one more content name"); int id3 = manager.save(content3); assertTrue(id3 > id2); assertTrue(manager.delete(id2)); GenericQueryManager<Ordered> gqm = GenericQueryManagerFactory.getInstance(mDatasource, Ordered.class); content1 = gqm.restore(id1); assertEquals(0, content1.getPriority()); assertNull(gqm.restore(id2)); content3 = gqm.restore(id3); assertEquals(1, content3.getPriority()); } finally { manager.remove(); } } public void testDeleteOrdinalRestricted() throws Exception { ContentQueryManager<OrderedRestricted> manager = new ContentQueryManager<OrderedRestricted>(mDatasource, OrderedRestricted.class); manager.install(); try { OrderedRestricted content1 = new OrderedRestricted() .name("the content name") .restricted(3); int id1 = manager.save(content1); assertTrue(id1 >= 0); OrderedRestricted content2 = new OrderedRestricted() .name("another content name") .restricted(5); int id2 = manager.save(content2); assertTrue(id2 > id1); OrderedRestricted content3 = new OrderedRestricted() .name("some other content name") .restricted(3); int id3 = manager.save(content3); assertTrue(id3 > id2); OrderedRestricted content4 = new OrderedRestricted() .name("yet one more content name") .restricted(3); int id4 = manager.save(content4); assertTrue(id4 > id3); OrderedRestricted content5 = new OrderedRestricted() .name("the last content name") .restricted(5); int id5 = manager.save(content5); assertTrue(id5 > id4); assertTrue(manager.delete(id3)); GenericQueryManager<OrderedRestricted> gqm = GenericQueryManagerFactory.getInstance(mDatasource, OrderedRestricted.class); content1 = gqm.restore(id1); assertEquals(0, content1.getPriority()); content2 = gqm.restore(id2); assertEquals(0, content2.getPriority()); assertNull(gqm.restore(id3)); content4 = gqm.restore(id4); assertEquals(1, content4.getPriority()); content5 = gqm.restore(id5); assertEquals(1, content5.getPriority()); } finally { manager.remove(); } } public void testDeleteNotPresent() throws Exception { ContentQueryManager<RegularPojo> manager = new ContentQueryManager<RegularPojo>(mDatasource, RegularPojo.class); manager.install(); try { assertFalse(manager.delete(3)); } finally { manager.remove(); } } public void testDeleteContentUnknownId() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { assertFalse(manager.delete(3)); } finally { manager.remove(); } } public void testSaveOrdinal() throws Exception { ContentQueryManager<Ordered> manager = new ContentQueryManager<Ordered>(mDatasource, Ordered.class); manager.install(); try { Ordered content1 = new Ordered() .name("the content name"); int id1 = manager.save(content1); assertTrue(id1 >= 0); Ordered content2 = new Ordered() .name("another content name"); int id2 = manager.save(content2); assertTrue(id2 > id1); Ordered content3 = new Ordered() .name("one more content name"); int id3 = manager.save(content3); assertTrue(id3 > id2); GenericQueryManager<Ordered> gqm = GenericQueryManagerFactory.getInstance(mDatasource, Ordered.class); content1 = gqm.restore(id1); assertEquals(0, content1.getPriority()); content2 = gqm.restore(id2); assertEquals(1, content2.getPriority()); content3 = gqm.restore(id3); assertEquals(2, content3.getPriority()); } finally { manager.remove(); } } public void testSaveOrdinalRestricted() throws Exception { ContentQueryManager<OrderedRestricted> manager = new ContentQueryManager<OrderedRestricted>(mDatasource, OrderedRestricted.class); manager.install(); try { OrderedRestricted content1 = new OrderedRestricted() .name("the content name") .restricted(3); int id1 = manager.save(content1); assertTrue(id1 >= 0); OrderedRestricted content2 = new OrderedRestricted() .name("another content name") .restricted(5); int id2 = manager.save(content2); assertTrue(id2 > id1); OrderedRestricted content3 = new OrderedRestricted() .name("some other content name") .restricted(3); int id3 = manager.save(content3); assertTrue(id3 > id2); OrderedRestricted content4 = new OrderedRestricted() .name("yet one more content name") .restricted(3); int id4 = manager.save(content4); assertTrue(id4 > id3); OrderedRestricted content5 = new OrderedRestricted() .name("the last content name") .restricted(5); int id5 = manager.save(content5); assertTrue(id5 > id4); GenericQueryManager<OrderedRestricted> gqm = GenericQueryManagerFactory.getInstance(mDatasource, OrderedRestricted.class); content1 = gqm.restore(id1); assertEquals(0, content1.getPriority()); content2 = gqm.restore(id2); assertEquals(0, content2.getPriority()); content3 = gqm.restore(id3); assertEquals(1, content3.getPriority()); content4 = gqm.restore(id4); assertEquals(2, content4.getPriority()); content5 = gqm.restore(id5); assertEquals(1, content5.getPriority()); } finally { manager.remove(); } } public void testMoveOrdinal() throws Exception { ContentQueryManager<Ordered> manager = new ContentQueryManager<Ordered>(mDatasource, Ordered.class); manager.install(); try { Ordered content1 = new Ordered() .name("the content name"); Ordered content2 = new Ordered() .name("another content name"); Ordered content3 = new Ordered() .name("one more content name"); manager.save(content1); manager.save(content2); manager.save(content3); GenericQueryManager<Ordered> gqm = GenericQueryManagerFactory.getInstance(mDatasource, Ordered.class); content1 = gqm.restore(content1.getId()); assertEquals(0, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(1, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(2, content3.getPriority()); assertTrue(manager.move(content1, "priority", OrdinalManager.DOWN)); content1 = gqm.restore(content1.getId()); assertEquals(1, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(0, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(2, content3.getPriority()); assertTrue(manager.move(content3, "priority", OrdinalManager.UP)); content1 = gqm.restore(content1.getId()); assertEquals(2, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(0, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(1, content3.getPriority()); manager.up(content2, "priority"); content1 = gqm.restore(content1.getId()); assertEquals(2, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(0, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(1, content3.getPriority()); manager.down(content1, "priority"); content1 = gqm.restore(content1.getId()); assertEquals(2, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(0, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(1, content3.getPriority()); } finally { manager.remove(); } } public void testMoveIllegalArguments() throws Exception { ContentQueryManager<Ordered> manager = new ContentQueryManager<Ordered>(mDatasource, Ordered.class); manager.install(); try { try { manager.move(null, "priority", OrdinalManager.UP); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } try { manager.move(new Ordered(), null, OrdinalManager.UP); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } try { manager.move(new Ordered(), "", OrdinalManager.UP); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } } finally { manager.remove(); } } public void testMoveUnknownProperty() throws Exception { ContentQueryManager<Ordered> manager = new ContentQueryManager<Ordered>(mDatasource, Ordered.class); manager.install(); try { try { manager.move(new Ordered(), "priorityunknown", OrdinalManager.UP); fail(); } catch (UnknownConstrainedPropertyException e) { assertSame(Ordered.class, e.getBeanClass()); assertEquals("priorityunknown", e.getProperty()); } } finally { manager.remove(); } } public void testMoveNotOrdinalConstraint() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { try { manager.move(new ContentImage(), "name", OrdinalManager.UP); fail(); } catch (ExpectedOrdinalConstraintException e) { assertSame(ContentImage.class, e.getBeanClass()); assertEquals("name", e.getProperty()); } } finally { manager.remove(); } } public void testMoveNotOrdinalInvalidOrdinalType() throws Exception { ContentQueryManager<OrderedInvalidType> manager = new ContentQueryManager<OrderedInvalidType>(mDatasource, OrderedInvalidType.class); manager.install(); try { try { manager.move(new OrderedInvalidType(), "priority", OrdinalManager.UP); fail(); } catch (InvalidOrdinalTypeException e) { assertSame(OrderedInvalidType.class, e.getBeanClass()); assertEquals("priority", e.getProperty()); } } finally { manager.remove(); } } public void testMoveOrdinalRestricted() throws Exception { ContentQueryManager<OrderedRestricted> manager = new ContentQueryManager<OrderedRestricted>(mDatasource, OrderedRestricted.class); manager.install(); try { OrderedRestricted content1 = new OrderedRestricted() .name("the content name") .restricted(3); OrderedRestricted content2 = new OrderedRestricted() .name("another content name") .restricted(5); OrderedRestricted content3 = new OrderedRestricted() .name("some other content name") .restricted(3); OrderedRestricted content4 = new OrderedRestricted() .name("yet one more content name") .restricted(3); OrderedRestricted content5 = new OrderedRestricted() .name("the last content name") .restricted(5); manager.save(content1); manager.save(content2); manager.save(content3); manager.save(content4); manager.save(content5); GenericQueryManager<OrderedRestricted> gqm = GenericQueryManagerFactory.getInstance(mDatasource, OrderedRestricted.class); content1 = gqm.restore(content1.getId()); assertEquals(0, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(0, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(1, content3.getPriority()); content4 = gqm.restore(content4.getId()); assertEquals(2, content4.getPriority()); content5 = gqm.restore(content5.getId()); assertEquals(1, content5.getPriority()); assertTrue(manager.move(content1, "priority", OrdinalManager.DOWN)); content1 = gqm.restore(content1.getId()); assertEquals(1, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(0, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(0, content3.getPriority()); content4 = gqm.restore(content4.getId()); assertEquals(2, content4.getPriority()); content5 = gqm.restore(content5.getId()); assertEquals(1, content5.getPriority()); assertTrue(manager.move(content4, "priority", OrdinalManager.UP)); content1 = gqm.restore(content1.getId()); assertEquals(2, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(0, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(0, content3.getPriority()); content4 = gqm.restore(content4.getId()); assertEquals(1, content4.getPriority()); content5 = gqm.restore(content5.getId()); assertEquals(1, content5.getPriority()); assertTrue(manager.up(content5, "priority")); content1 = gqm.restore(content1.getId()); assertEquals(2, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(1, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(0, content3.getPriority()); content4 = gqm.restore(content4.getId()); assertEquals(1, content4.getPriority()); content5 = gqm.restore(content5.getId()); assertEquals(0, content5.getPriority()); assertTrue(manager.down(content5, "priority")); content1 = gqm.restore(content1.getId()); assertEquals(2, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(0, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(0, content3.getPriority()); content4 = gqm.restore(content4.getId()); assertEquals(1, content4.getPriority()); content5 = gqm.restore(content5.getId()); assertEquals(1, content5.getPriority()); manager.up(content2, "priority"); content1 = gqm.restore(content1.getId()); assertEquals(2, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(0, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(0, content3.getPriority()); content4 = gqm.restore(content4.getId()); assertEquals(1, content4.getPriority()); content5 = gqm.restore(content5.getId()); assertEquals(1, content5.getPriority()); manager.down(content1, "priority"); content1 = gqm.restore(content1.getId()); assertEquals(2, content1.getPriority()); content2 = gqm.restore(content2.getId()); assertEquals(0, content2.getPriority()); content3 = gqm.restore(content3.getId()); assertEquals(0, content3.getPriority()); content4 = gqm.restore(content4.getId()); assertEquals(1, content4.getPriority()); content5 = gqm.restore(content5.getId()); assertEquals(1, content5.getPriority()); } finally { manager.remove(); } } public void testSaveOrdinalRestrictedInvalidType() throws Exception { ContentQueryManager<OrdrdRestrInvalidType> manager = new ContentQueryManager<OrdrdRestrInvalidType>(mDatasource, OrdrdRestrInvalidType.class); manager.install(); try { OrdrdRestrInvalidType content = new OrdrdRestrInvalidType() .name("the content name") .restricted("3"); try { manager.save(content); fail(); } catch (InvalidOrdinalRestrictionTypeException e) { assertSame(OrdrdRestrInvalidType.class, e.getBeanClass()); assertEquals("priority", e.getProperty()); assertEquals("restricted", e.getRestriction()); } } finally { manager.remove(); } } public void testMoveUnknownOrdinal() throws Exception { ContentQueryManager<OrdrdUnknown> manager = new ContentQueryManager<OrdrdUnknown>(mDatasource, OrdrdUnknown.class); manager.install(); try { try { manager.move(new OrdrdUnknown(), "unknown", OrdinalManager.UP); fail(); } catch (UnknownOrdinalException e) { assertSame(OrdrdUnknown.class, e.getBeanClass()); assertEquals("unknown", e.getProperty()); } } finally { manager.remove(); } } public void testMoveUnknownRestriction() throws Exception { ContentQueryManager<OrdrdRestrUnknown> manager = new ContentQueryManager<OrdrdRestrUnknown>(mDatasource, OrdrdRestrUnknown.class); manager.install(); try { try { manager.move(new OrdrdRestrUnknown(), "priority", OrdinalManager.UP); fail(); } catch (UnknownOrdinalRestrictionException e) { assertSame(OrdrdRestrUnknown.class, e.getBeanClass()); assertEquals("priority", e.getProperty()); assertEquals("restrictedunknown", e.getRestriction()); } } finally { manager.remove(); } } public void testMoveRestrictionInvalidType() throws Exception { ContentQueryManager<OrdrdRestrInvalidType> manager = new ContentQueryManager<OrdrdRestrInvalidType>(mDatasource, OrdrdRestrInvalidType.class); manager.install(); try { try { manager.move(new OrdrdRestrInvalidType().restricted("restricted"), "priority", OrdinalManager.UP); fail(); } catch (InvalidOrdinalRestrictionTypeException e) { assertSame(OrdrdRestrInvalidType.class, e.getBeanClass()); assertEquals("priority", e.getProperty()); assertEquals("restricted", e.getRestriction()); } } finally { manager.remove(); } } public void testMoveRestrictionNull() throws Exception { ContentQueryManager<OrdrdRestrInvalidType> manager = new ContentQueryManager<OrdrdRestrInvalidType>(mDatasource, OrdrdRestrInvalidType.class); manager.install(); try { try { manager.move(new OrdrdRestrInvalidType(), "priority", OrdinalManager.UP); fail(); } catch (OrdinalRestrictionCantBeNullException e) { assertSame(OrdrdRestrInvalidType.class, e.getBeanClass()); assertEquals("priority", e.getProperty()); assertEquals("restricted", e.getRestriction()); } } finally { manager.remove(); } } public void testSaveOrdinalRestrictedUnknownRestriction() throws Exception { ContentQueryManager<OrdrdRestrUnknown> manager = new ContentQueryManager<OrdrdRestrUnknown>(mDatasource, OrdrdRestrUnknown.class); manager.install(); try { OrdrdRestrUnknown content = new OrdrdRestrUnknown() .name("the content name") .restricted(3); try { manager.save(content); fail(); } catch (UnknownOrdinalRestrictionException e) { assertSame(OrdrdRestrUnknown.class, e.getBeanClass()); assertEquals("priority", e.getProperty()); assertEquals("restrictedunknown", e.getRestriction()); } } finally { manager.remove(); } } public void testHasContent() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImage content = new ContentImage() .name("the content name") .image(data_image_gif); int id = manager.save(content); assertTrue(manager.hasContent(id, "image")); assertFalse(manager.hasContent(id, "unknown")); assertFalse(manager.hasContent(34, "image")); assertTrue(manager.hasContent(content, "image")); assertFalse(manager.hasContent(content, "unknown")); content.setId(334); assertFalse(manager.hasContent(content, "image")); } finally { manager.remove(); } } public void testHasContentRepository() throws Exception { ContentQueryManager<ContentImageRepository> manager = new ContentQueryManager<ContentImageRepository>(mDatasource, ContentImageRepository.class); manager.install(); manager.getContentManager().createRepository("testrep"); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImageRepository content = new ContentImageRepository() .name("the content name") .image(data_image_gif); int id = manager.save(content); checkContentRepository(id, "testrep"); assertTrue(manager.hasContent(id, "image")); assertFalse(manager.hasContent(id, "unknown")); assertFalse(manager.hasContent(34, "image")); assertTrue(manager.hasContent(content, "image")); assertFalse(manager.hasContent(content, "unknown")); content.setId(334); assertFalse(manager.hasContent(content, "image")); } finally { manager.remove(); } } public void testRestoreById() throws Exception { ContentQueryManager<ContentImage> manager = new ContentQueryManager<ContentImage>(mDatasource, ContentImage.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImage content = new ContentImage() .name("the content name") .image(data_image_gif); int id = manager.save(content); ContentImage restored = manager.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); assertNull(restored.getImage()); } finally { manager.remove(); } } public void testRestoreByIdAutoRetrieved() throws Exception { ContentQueryManager<ContentImageAutoRetrieved> manager = new ContentQueryManager<ContentImageAutoRetrieved>(mDatasource, ContentImageAutoRetrieved.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImageAutoRetrieved content = new ContentImageAutoRetrieved() .name("the content name") .image(data_image_gif); int id = manager.save(content); ContentImageAutoRetrieved restored = manager.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); URL image_resource_png = ResourceFinderClasspath.getInstance().getResource("uwyn.png"); byte[] data_image_png = FileUtils.readBytes(image_resource_png); assertTrue(Arrays.equals(data_image_png, restored.getImage())); } finally { manager.remove(); } } public void testRestoreByIdPojo() throws Exception { ContentQueryManager<RegularPojo> manager = new ContentQueryManager<RegularPojo>(mDatasource, RegularPojo.class); manager.install(); try { RegularPojo content = new RegularPojo() .name("the regular pojo name"); int id = manager.save(content); assertTrue(id >= 0); RegularPojo restored = manager.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); } finally { manager.remove(); } } public void testRestoreByIdNonCmfProperties() throws Exception { ContentQueryManager<ContentImageNonCmfProps> manager = new ContentQueryManager<ContentImageNonCmfProps>(mDatasource, ContentImageNonCmfProps.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImageNonCmfProps content = new ContentImageNonCmfProps() .name("the content name") .image(data_image_gif); int id = manager.save(content); ContentImageNonCmfProps restored = manager.restore(id); assertEquals(content.getId(), restored.getId()); assertEquals(content.getName(), restored.getName()); assertNull(restored.getImage()); } finally { manager.remove(); } } public void testRestoreFirst() throws Exception { ContentQueryManager<ContentImageAutoRetrieved> manager = new ContentQueryManager<ContentImageAutoRetrieved>(mDatasource, ContentImageAutoRetrieved.class); manager.install(); try { URL image_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] data_image_gif = FileUtils.readBytes(image_resource_gif); ContentImageAutoRetrieved content1 = new ContentImageAutoRetrieved() .name("the content name") .image(data_image_gif); manager.save(content1); URL image_resource_tif= ResourceFinderClasspath.getInstance().getResource("uwyn.tif"); byte[] data_image_tif = FileUtils.readBytes(image_resource_tif); ContentImageAutoRetrieved content2 = new ContentImageAutoRetrieved() .name("another content name") .image(data_image_tif); manager.save(content2); ContentImageAutoRetrieved restored = manager.restoreFirst(manager.getRestoreQuery().orderBy("id", Select.DESC)); assertEquals(content2.getId(), restored.getId()); assertEquals(content2.getName(), restored.getName()); URL image_resource_png = ResourceFinderClasspath.getInstance().getResource("uwyn-noalpha.png"); byte[] data_image_png = FileUtils.readBytes(image_resource_png); assertTrue(Arrays.equals(data_image_png, restored.getImage())); } finally { manager.remove(); } } public void testRestore() throws Exception { ContentQueryManager<ContentImageAutoRetrieved> manager = new ContentQueryManager<ContentImageAutoRetrieved>(mDatasource, ContentImageAutoRetrieved.class); manager.install(); try { URL uwyn_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] uwyn_image_gif = FileUtils.readBytes(uwyn_resource_gif); ContentImageAutoRetrieved content1 = new ContentImageAutoRetrieved() .name("the content name") .image(uwyn_image_gif); manager.save(content1); URL rife_resource_tif= ResourceFinderClasspath.getInstance().getResource("rife-logo_small.tif"); byte[] rife_image_tif = FileUtils.readBytes(rife_resource_tif); ContentImageAutoRetrieved content2 = new ContentImageAutoRetrieved() .name("another content name") .image(rife_image_tif); manager.save(content2); URL uwyn_resource_png = ResourceFinderClasspath.getInstance().getResource("uwyn.png"); byte[] uwyn_image_png = FileUtils.readBytes(uwyn_resource_png); URL rife_resource_png = ResourceFinderClasspath.getInstance().getResource("rife-logo_small.png"); byte[] rife_image_png = FileUtils.readBytes(rife_resource_png); List<ContentImageAutoRetrieved> restored_list = manager.restore(); ContentImageAutoRetrieved restored = null; Iterator<ContentImageAutoRetrieved> restored_it = restored_list.iterator(); restored = restored_it.next(); assertEquals(content1.getId(), restored.getId()); assertEquals(content1.getName(), restored.getName()); assertTrue(Arrays.equals(uwyn_image_png, restored.getImage())); restored = restored_it.next(); assertEquals(content2.getId(), restored.getId()); assertEquals(content2.getName(), restored.getName()); assertTrue(Arrays.equals(rife_image_png, restored.getImage())); assertFalse(restored_it.hasNext()); } finally { manager.remove(); } } public void testRestoreRepository() throws Exception { ContentQueryManager<ContentImageAutoRetrRep> manager = new ContentQueryManager<ContentImageAutoRetrRep>(mDatasource, ContentImageAutoRetrRep.class); manager.install(); manager.getContentManager().createRepository("testrep"); try { URL uwyn_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] uwyn_image_gif = FileUtils.readBytes(uwyn_resource_gif); ContentImageAutoRetrRep content1 = new ContentImageAutoRetrRep() .name("the content name") .image(uwyn_image_gif); int id1 = manager.save(content1); checkContentRepository(id1, "testrep"); URL rife_resource_tif= ResourceFinderClasspath.getInstance().getResource("rife-logo_small.tif"); byte[] rife_image_tif = FileUtils.readBytes(rife_resource_tif); ContentImageAutoRetrRep content2 = new ContentImageAutoRetrRep() .name("another content name") .image(rife_image_tif); int id2 = manager.save(content2); checkContentRepository(id2, "testrep"); URL uwyn_resource_png = ResourceFinderClasspath.getInstance().getResource("uwyn.png"); byte[] uwyn_image_png = FileUtils.readBytes(uwyn_resource_png); URL rife_resource_png = ResourceFinderClasspath.getInstance().getResource("rife-logo_small.png"); byte[] rife_image_png = FileUtils.readBytes(rife_resource_png); List<ContentImageAutoRetrRep> restored_list = manager.restore(); ContentImageAutoRetrRep restored = null; Iterator<ContentImageAutoRetrRep> restored_it = restored_list.iterator(); restored = restored_it.next(); assertEquals(content1.getId(), restored.getId()); assertEquals(content1.getName(), restored.getName()); assertTrue(Arrays.equals(uwyn_image_png, restored.getImage())); restored = restored_it.next(); assertEquals(content2.getId(), restored.getId()); assertEquals(content2.getName(), restored.getName()); assertTrue(Arrays.equals(rife_image_png, restored.getImage())); assertFalse(restored_it.hasNext()); } finally { manager.remove(); } } public void testRestoreQuery() throws Exception { ContentQueryManager<ContentImageAutoRetrieved> manager = new ContentQueryManager<ContentImageAutoRetrieved>(mDatasource, ContentImageAutoRetrieved.class); manager.install(); try { URL uwyn_resource_gif = ResourceFinderClasspath.getInstance().getResource("uwyn.gif"); byte[] uwyn_image_gif = FileUtils.readBytes(uwyn_resource_gif); ContentImageAutoRetrieved content1 = new ContentImageAutoRetrieved() .name("the content name") .image(uwyn_image_gif); manager.save(content1); URL rife_resource_tif= ResourceFinderClasspath.getInstance().getResource("rife-logo_small.tif"); byte[] rife_image_tif = FileUtils.readBytes(rife_resource_tif); ContentImageAutoRetrieved content2 = new ContentImageAutoRetrieved() .name("another content name") .image(rife_image_tif); manager.save(content2); URL uwyn_resource_png = ResourceFinderClasspath.getInstance().getResource("uwyn.png"); byte[] uwyn_image_png = FileUtils.readBytes(uwyn_resource_png); URL rife_resource_png = ResourceFinderClasspath.getInstance().getResource("rife-logo_small.png"); byte[] rife_image_png = FileUtils.readBytes(rife_resource_png); List<ContentImageAutoRetrieved> restored_list = manager.restore(manager.getRestoreQuery().orderBy("id", Select.DESC)); ContentImageAutoRetrieved restored = null; Iterator<ContentImageAutoRetrieved> restored_it = restored_list.iterator(); restored = restored_it.next(); assertEquals(content2.getId(), restored.getId()); assertEquals(content2.getName(), restored.getName()); assertTrue(Arrays.equals(rife_image_png, restored.getImage())); restored = restored_it.next(); assertEquals(content1.getId(), restored.getId()); assertEquals(content1.getName(), restored.getName()); assertTrue(Arrays.equals(uwyn_image_png, restored.getImage())); assertFalse(restored_it.hasNext()); } finally { manager.remove(); } } }