package org.argeo.server.jcr; import java.io.File; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.List; import junit.framework.TestCase; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.jackrabbit.core.TransientRepository; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class JcrResourceAdapterTest extends TestCase { private static SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMdd:hhmmss.SSS"); private final static Log log = LogFactory .getLog(JcrResourceAdapterTest.class); private JcrResourceAdapter jra; private TransientRepository repository; public void testCreate() throws Exception { String basePath = "/test/subdir"; jra.mkdirs(basePath); Resource res = new ClassPathResource("org/argeo/server/jcr/dummy00.xls"); String filePath = basePath + "/dummy.xml"; jra.create(filePath, res, "application/vnd.ms-excel"); InputStream in = jra.retrieve(filePath); assertTrue(IOUtils.contentEquals(res.getInputStream(), in)); } public void testVersioning() throws Exception { String basePath = "/test/versions"; jra.mkdirs(basePath); String filePath = basePath + "/dummy.xml"; Resource res00 = new ClassPathResource( "org/argeo/server/jcr/dummy00.xls"); jra.create(filePath, res00, "application/vnd.ms-excel"); Resource res01 = new ClassPathResource( "org/argeo/server/jcr/dummy01.xls"); jra.update(filePath, res01); Resource res02 = new ClassPathResource( "org/argeo/server/jcr/dummy02.xls"); jra.update(filePath, res02); List versions = jra.listVersions(filePath); for (Calendar version : versions) log.debug(sdf.format(version.getTime())); assertEquals(4, versions.size()); InputStream in = jra.retrieve(filePath, 1); assertTrue(IOUtils.contentEquals(res01.getInputStream(), in)); in = jra.retrieve(filePath, 0); assertTrue(IOUtils.contentEquals(res00.getInputStream(), in)); in = jra.retrieve(filePath, 2); assertTrue(IOUtils.contentEquals(res02.getInputStream(), in)); Resource res03 = new ClassPathResource( "org/argeo/server/jcr/dummy03.xls"); jra.update(filePath, res03); in = jra.retrieve(filePath, 1); assertTrue(IOUtils.contentEquals(res01.getInputStream(), in)); } @Override protected void setUp() throws Exception { File homeDir = new File(System.getProperty("java.io.tmpdir"), JcrResourceAdapterTest.class.getSimpleName()); FileUtils.deleteDirectory(homeDir); Resource res = new ClassPathResource( "org/argeo/server/jcr/repository.xml"); repository = new TransientRepository(res.getFile(), homeDir); jra = new JcrResourceAdapter(); jra.setRepository(repository); jra.setUsername("demo"); jra.setPassword("demo"); jra.afterPropertiesSet(); } @Override protected void tearDown() throws Exception { jra.destroy(); // repository.shutdown(); } }