You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by sk...@apache.org on 2010/06/15 17:51:43 UTC

svn commit: r954941 [5/7] - in /incubator/chemistry/opencmis/trunk: ./ _dev/ chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/ chemistry-opencmis-client/chemistry-opencmi...

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AbstractServiceTst.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AbstractServiceTst.java?rev=954941&r1=954940&r2=954941&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AbstractServiceTst.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AbstractServiceTst.java Tue Jun 15 15:51:42 2010
@@ -1,359 +1,380 @@
-package org.apache.chemistry.opencmis.inmemory;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.chemistry.opencmis.client.bindings.CmisBindingFactory;
-import org.apache.chemistry.opencmis.commons.PropertyIds;
-import org.apache.chemistry.opencmis.commons.SessionParameter;
-import org.apache.chemistry.opencmis.commons.data.Acl;
-import org.apache.chemistry.opencmis.commons.data.ContentStream;
-import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
-import org.apache.chemistry.opencmis.commons.data.ObjectData;
-import org.apache.chemistry.opencmis.commons.data.ObjectParentData;
-import org.apache.chemistry.opencmis.commons.data.Properties;
-import org.apache.chemistry.opencmis.commons.data.PropertyData;
-import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
-import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
-import org.apache.chemistry.opencmis.commons.enums.VersioningState;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.BindingsObjectFactoryImpl;
-import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
-import org.apache.chemistry.opencmis.commons.spi.CmisBinding;
-import org.apache.chemistry.opencmis.commons.spi.DiscoveryService;
-import org.apache.chemistry.opencmis.commons.spi.MultiFilingService;
-import org.apache.chemistry.opencmis.commons.spi.NavigationService;
-import org.apache.chemistry.opencmis.commons.spi.ObjectService;
-import org.apache.chemistry.opencmis.commons.spi.RepositoryService;
-import org.apache.chemistry.opencmis.commons.spi.VersioningService;
-import org.apache.chemistry.opencmis.inmemory.RepositoryServiceTest.UnitTestRepositoryInfo;
-import org.apache.chemistry.opencmis.inmemory.server.InMemoryServiceFactoryImpl;
-import org.apache.chemistry.opencmis.inmemory.storedobj.impl.ContentStreamDataImpl;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class AbstractServiceTst /* extends TestCase */{
-    private static Log LOG = LogFactory.getLog(AbstractServiceTst.class);
-    protected static final String REPOSITORY_ID = "UnitTestRepository";
-    protected BindingsObjectFactory fFactory = new BindingsObjectFactoryImpl();
-    protected String fRootFolderId;
-    protected String fRepositoryId;
-    protected ObjectService fObjSvc;
-    protected NavigationService fNavSvc;
-    protected RepositoryService fRepSvc;
-    protected VersioningService fVerSvc;
-    protected MultiFilingService fMultiSvc;
-    protected DiscoveryService fDiscSvc;
-    protected DummyCallContext fTestCallContext;
-    private String fTypeCreatorClassName;
-
-    public AbstractServiceTst() {
-        // The in-memory server unit tests can either be run directly against
-        // the
-        // service implementation or against a clocal binding interface. The
-        // local
-        // binding interfaces offers some benefits like type system caching etc.
-        // The default is using the direct implementation. Subclasses may
-        // override this behavior.
-
-        // Init with default types, can be overridden by subclasses:
-        fTypeCreatorClassName = UnitTestTypeSystemCreator.class.getName();
-    }
-
-    // Subclasses may want to use their own types
-    protected void setTypeCreatorClass(String typeCreatorClassName) {
-        fTypeCreatorClassName = typeCreatorClassName;
-    }
-
-    protected void setUp() throws Exception {
-        // super.setUp();
-        LOG.debug("Initializing InMemory Test with type creator class: " + fTypeCreatorClassName);
-        Map<String, String> parameters = new HashMap<String, String>();
-
-        // attach repository info to the session:
-        parameters.put(ConfigConstants.TYPE_CREATOR_CLASS, fTypeCreatorClassName);
-        parameters.put(ConfigConstants.REPOSITORY_ID, REPOSITORY_ID);
-
-        // attach repository info to the session:
-        parameters.put(ConfigConstants.REPOSITORY_INFO_CREATOR_CLASS, UnitTestRepositoryInfo.class.getName());
-
-        // give subclasses a chance to provide additional parameters for special
-        // tests
-        addParameters(parameters);
-
-        fTestCallContext = new DummyCallContext();
-        // Attach a standard CallContext to a thread before the services are
-        // initialized.
-        // RuntimeContext.attachCfg(fTestCallContext);
-
-        initializeUsingLocalBinding(parameters);
-
-        assertNotNull(fRepSvc);
-        assertNotNull(fObjSvc);
-        assertNotNull(fNavSvc);
-
-        RepositoryInfo rep = fRepSvc.getRepositoryInfo(REPOSITORY_ID, null);
-        fRootFolderId = rep.getRootFolderId();
-        fRepositoryId = rep.getId();
-
-        assertNotNull(fRepositoryId);
-        assertNotNull(fRootFolderId);
-    }
-
-    // Override this method in subclasses if you want to provide additional
-    // configuration
-    // parameters. Default implementation is empty
-    protected void addParameters(Map<String, String> parameters) {
-    }
-
-    protected void tearDown() throws Exception {
-        // super.tearDown();
-    }
-
-    public void testDummy() {
-        // dummy test to make tools happy that complain if there are no tests
-        // available in a test class
-    }
-
-    protected String createFolder(String folderName, String parentFolderId, String typeId) {
-        Properties props = createFolderProperties(folderName, typeId);
-        String id = null;
-        try {
-            id = fObjSvc.createFolder(fRepositoryId, props, parentFolderId, null, null, null, null);
-            if (null == id)
-                fail("createFolder failed.");
-        } catch (Exception e) {
-            fail("createFolder() failed with exception: " + e);
-        }
-        return id;
-    }
-
-    protected String createDocument(String name, String folderId, String typeId, VersioningState versioningState,
-            boolean withContent) {
-        ContentStream contentStream = null;
-        List<String> policies = null;
-        Acl addACEs = null;
-        Acl removeACEs = null;
-        ExtensionsData extension = null;
-
-        Properties props = createDocumentProperties(name, typeId);
-
-        if (withContent)
-            contentStream = createContent();
-
-        String id = null;
-        try {
-            id = fObjSvc.createDocument(fRepositoryId, props, folderId, contentStream, versioningState, policies,
-                    addACEs, removeACEs, extension);
-            if (null == id)
-                fail("createDocument failed.");
-        } catch (Exception e) {
-            fail("createDocument() failed with exception: " + e);
-        }
-        return id;
-
-    }
-
-    protected String createDocument(String name, String folderId, String typeId, boolean withContent) {
-        VersioningState versioningState = VersioningState.NONE;
-        return createDocument(name, folderId, typeId, versioningState, withContent);
-    }
-
-    protected Properties createDocumentProperties(String name, String typeId) {
-        List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>();
-        properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, name));
-        properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, typeId));
-        Properties props = fFactory.createPropertiesData(properties);
-        return props;
-    }
-
-    protected Properties createFolderProperties(String folderName, String typeId) {
-        List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>();
-        properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, folderName));
-        properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, typeId));
-        Properties props = fFactory.createPropertiesData(properties);
-        return props;
-    }
-
-    protected ContentStream createContent() {
-        ContentStreamDataImpl content = new ContentStreamDataImpl();
-        content.setFileName("data.txt");
-        content.setMimeType("text/plain");
-        int len = 32 * 1024;
-        byte[] b = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x0c, 0x0a,
-                0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x0c, 0x0a }; // 32
-        // Bytes
-        ByteArrayOutputStream ba = new ByteArrayOutputStream(len);
-        try {
-            for (int i = 0; i < 1024; i++)
-                ba.write(b);
-            content.setContent(new ByteArrayInputStream(ba.toByteArray()));
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to fill content stream with data", e);
-        }
-        return content;
-    }
-
-    protected ContentStream createContent(char ch) {
-        ContentStreamDataImpl content = new ContentStreamDataImpl();
-        content.setFileName("data.txt");
-        content.setMimeType("text/plain");
-        int len = 32 * 1024;
-        byte[] b = new byte[32];
-        for (int i = 0; i < 32; i++)
-            b[i] = (byte) Character.getNumericValue(ch);
-        ByteArrayOutputStream ba = new ByteArrayOutputStream(len);
-        try {
-            for (int i = 0; i < 1024; i++)
-                ba.write(b);
-            content.setContent(new ByteArrayInputStream(ba.toByteArray()));
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to fill content stream with data", e);
-        }
-        return content;
-    }
-
-    protected void verifyContentResult(ContentStream sd) {
-        assertEquals("text/plain", sd.getMimeType());
-        assertEquals("data.txt", sd.getFileName());
-        assertEquals(32 * 1024, sd.getBigLength().longValue());
-        byte[] ba = new byte[32];
-        InputStream is = sd.getStream();
-        int counter = 0;
-        try {
-            while (is.read(ba) == ba.length) {
-                ++counter;
-                assertEquals(0x61, ba[0]);
-                assertEquals(0x6e, ba[29]);
-                assertEquals(0x0c, ba[30]);
-                assertEquals(0x0a, ba[31]);
-            }
-        } catch (IOException e) {
-            fail("reading from content stream failed");
-        }
-        assertEquals(1024, counter);
-    }
-
-    protected String getByPath(String id, String path) {
-        ObjectData res = null;
-        try {
-            res = fObjSvc.getObjectByPath(fRepositoryId, path, "*", false, IncludeRelationships.NONE, null, false,
-                    false, null);
-            assertNotNull(res);
-            assertEquals(id, res.getId());
-        } catch (Exception e) {
-            fail("getObject() failed with exception: " + e);
-        }
-        return res.getId();
-    }
-
-    @SuppressWarnings("unchecked")
-    protected String getPathOfFolder(String id) {
-        String path = null;
-        try {
-            String filter = PropertyIds.PATH;
-            Properties res = fObjSvc.getProperties(fRepositoryId, id, filter, null);
-            assertNotNull(res);
-            PropertyData<String> pd = (PropertyData<String>) res.getProperties().get(PropertyIds.PATH);
-            assertNotNull(pd);
-            path = pd.getFirstValue();
-            assertNotNull(path);
-        } catch (Exception e) {
-            fail("getProperties() failed with exception: " + e);
-        }
-        return path;
-    }
-
-    @SuppressWarnings("unchecked")
-    protected String getPathOfDocument(String id) {
-        String path = null;
-        String filter = "*";
-        List<ObjectParentData> parentData = fNavSvc.getObjectParents(fRepositoryId, id, filter, false,
-                IncludeRelationships.NONE, null, true, null);
-        String name = parentData.get(0).getRelativePathSegment();
-        PropertyData<String> pd = (PropertyData<String>) parentData.get(0).getObject().getProperties().getProperties()
-                .get(PropertyIds.PATH);
-        assertNotNull(pd);
-        path = pd.getFirstValue() + "/" + name;
-        return path;
-    }
-
-    protected ObjectData getDocumentObjectData(String id) {
-        ObjectData res = null;
-        try {
-            String returnedId = null;
-            res = fObjSvc.getObject(fRepositoryId, id, "*", false, IncludeRelationships.NONE, null, false, false, null);
-            assertNotNull(res);
-            returnedId = res.getId();
-            testReturnedProperties(returnedId, res.getProperties().getProperties());
-            assertEquals(id, returnedId);
-        } catch (Exception e) {
-            fail("getObject() failed with exception: " + e);
-        }
-        return res;
-    }
-
-    protected String getDocument(String id) {
-        ObjectData res = getDocumentObjectData(id);
-        assertNotNull(res);
-        return res.getId();
-    }
-
-    protected void testReturnedProperties(String objectId, Map<String, PropertyData<?>> props) {
-        for (PropertyData<?> pd : props.values()) {
-            LOG.debug("return property id: " + pd.getId() + ", value: " + pd.getValues());
-        }
-
-        PropertyData<?> pd = props.get(PropertyIds.OBJECT_ID);
-        assertNotNull(pd);
-        assertEquals(objectId, pd.getFirstValue());
-    }
-
-     /**
-     * Instantiates the services by using the client provider interface.
-     *
-     * @param parameters
-     *            configuration parameters for client provider interface and
-     *            in-memory provider
-     */
-    private void initializeUsingLocalBinding(Map<String, String> parameters) {
-
-        LOG.info("Initialize unit test using the local binding interface.");
-
-        // add parameters for local binding:
-        parameters.put(SessionParameter.BINDING_SPI_CLASS, SessionParameter.LOCAL_FACTORY);
-        parameters.put(SessionParameter.LOCAL_FACTORY, InMemoryServiceFactoryImpl.class.getName());
-        parameters.put(ConfigConstants.OVERRIDE_CALL_CONTEXT, "true");
-        InMemoryServiceFactoryImpl.setOverrideCallContext(fTestCallContext);
-
-        // get factory and create binding
-        CmisBindingFactory factory = CmisBindingFactory.newInstance();
-        CmisBinding binding = factory.createCmisLocalBinding(parameters);
-        assertNotNull(binding);
-        fFactory = binding.getObjectFactory();
-        fRepSvc = binding.getRepositoryService();
-        fObjSvc = binding.getObjectService();
-        fNavSvc = binding.getNavigationService();
-        fVerSvc = binding.getVersioningService();
-        fMultiSvc = binding.getMultiFilingService();
-        fDiscSvc = binding.getDiscoveryService();
-    }
-
-    protected String getStringProperty(ObjectData objData, String propertyKey) {
-        PropertyData<? extends Object> pd = (PropertyData<? extends Object>) objData.getProperties().getProperties()
-                .get(PropertyIds.PATH);
-        assertNotNull(pd.getFirstValue());
-        assertTrue(pd.getFirstValue() instanceof String);
-        return (String) pd.getFirstValue();
-    }
-}
+package org.apache.chemistry.opencmis.inmemory;
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.client.bindings.CmisBindingFactory;
+import org.apache.chemistry.opencmis.commons.PropertyIds;
+import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.commons.data.Acl;
+import org.apache.chemistry.opencmis.commons.data.ContentStream;
+import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.data.ObjectData;
+import org.apache.chemistry.opencmis.commons.data.ObjectParentData;
+import org.apache.chemistry.opencmis.commons.data.Properties;
+import org.apache.chemistry.opencmis.commons.data.PropertyData;
+import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+import org.apache.chemistry.opencmis.commons.enums.VersioningState;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.BindingsObjectFactoryImpl;
+import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
+import org.apache.chemistry.opencmis.commons.spi.CmisBinding;
+import org.apache.chemistry.opencmis.commons.spi.DiscoveryService;
+import org.apache.chemistry.opencmis.commons.spi.MultiFilingService;
+import org.apache.chemistry.opencmis.commons.spi.NavigationService;
+import org.apache.chemistry.opencmis.commons.spi.ObjectService;
+import org.apache.chemistry.opencmis.commons.spi.RepositoryService;
+import org.apache.chemistry.opencmis.commons.spi.VersioningService;
+import org.apache.chemistry.opencmis.inmemory.RepositoryServiceTest.UnitTestRepositoryInfo;
+import org.apache.chemistry.opencmis.inmemory.server.InMemoryServiceFactoryImpl;
+import org.apache.chemistry.opencmis.inmemory.storedobj.impl.ContentStreamDataImpl;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class AbstractServiceTst /* extends TestCase */{
+    private static Log LOG = LogFactory.getLog(AbstractServiceTst.class);
+    protected static final String REPOSITORY_ID = "UnitTestRepository";
+    protected BindingsObjectFactory fFactory = new BindingsObjectFactoryImpl();
+    protected String fRootFolderId;
+    protected String fRepositoryId;
+    protected ObjectService fObjSvc;
+    protected NavigationService fNavSvc;
+    protected RepositoryService fRepSvc;
+    protected VersioningService fVerSvc;
+    protected MultiFilingService fMultiSvc;
+    protected DiscoveryService fDiscSvc;
+    protected DummyCallContext fTestCallContext;
+    private String fTypeCreatorClassName;
+
+    public AbstractServiceTst() {
+        // The in-memory server unit tests can either be run directly against
+        // the
+        // service implementation or against a clocal binding interface. The
+        // local
+        // binding interfaces offers some benefits like type system caching etc.
+        // The default is using the direct implementation. Subclasses may
+        // override this behavior.
+
+        // Init with default types, can be overridden by subclasses:
+        fTypeCreatorClassName = UnitTestTypeSystemCreator.class.getName();
+    }
+
+    // Subclasses may want to use their own types
+    protected void setTypeCreatorClass(String typeCreatorClassName) {
+        fTypeCreatorClassName = typeCreatorClassName;
+    }
+
+    protected void setUp() throws Exception {
+        // super.setUp();
+        LOG.debug("Initializing InMemory Test with type creator class: " + fTypeCreatorClassName);
+        Map<String, String> parameters = new HashMap<String, String>();
+
+        // attach repository info to the session:
+        parameters.put(ConfigConstants.TYPE_CREATOR_CLASS, fTypeCreatorClassName);
+        parameters.put(ConfigConstants.REPOSITORY_ID, REPOSITORY_ID);
+
+        // attach repository info to the session:
+        parameters.put(ConfigConstants.REPOSITORY_INFO_CREATOR_CLASS, UnitTestRepositoryInfo.class.getName());
+
+        // give subclasses a chance to provide additional parameters for special
+        // tests
+        addParameters(parameters);
+
+        fTestCallContext = new DummyCallContext();
+        // Attach a standard CallContext to a thread before the services are
+        // initialized.
+        // RuntimeContext.attachCfg(fTestCallContext);
+
+        initializeUsingLocalBinding(parameters);
+
+        assertNotNull(fRepSvc);
+        assertNotNull(fObjSvc);
+        assertNotNull(fNavSvc);
+
+        RepositoryInfo rep = fRepSvc.getRepositoryInfo(REPOSITORY_ID, null);
+        fRootFolderId = rep.getRootFolderId();
+        fRepositoryId = rep.getId();
+
+        assertNotNull(fRepositoryId);
+        assertNotNull(fRootFolderId);
+    }
+
+    // Override this method in subclasses if you want to provide additional
+    // configuration
+    // parameters. Default implementation is empty
+    protected void addParameters(Map<String, String> parameters) {
+    }
+
+    protected void tearDown() throws Exception {
+        // super.tearDown();
+    }
+
+    public void testDummy() {
+        // dummy test to make tools happy that complain if there are no tests
+        // available in a test class
+    }
+
+    protected String createFolder(String folderName, String parentFolderId, String typeId) {
+        Properties props = createFolderProperties(folderName, typeId);
+        String id = null;
+        try {
+            id = fObjSvc.createFolder(fRepositoryId, props, parentFolderId, null, null, null, null);
+            if (null == id)
+                fail("createFolder failed.");
+        } catch (Exception e) {
+            fail("createFolder() failed with exception: " + e);
+        }
+        return id;
+    }
+
+    protected String createDocument(String name, String folderId, String typeId, VersioningState versioningState,
+            boolean withContent) {
+        ContentStream contentStream = null;
+        List<String> policies = null;
+        Acl addACEs = null;
+        Acl removeACEs = null;
+        ExtensionsData extension = null;
+
+        Properties props = createDocumentProperties(name, typeId);
+
+        if (withContent)
+            contentStream = createContent();
+
+        String id = null;
+        try {
+            id = fObjSvc.createDocument(fRepositoryId, props, folderId, contentStream, versioningState, policies,
+                    addACEs, removeACEs, extension);
+            if (null == id)
+                fail("createDocument failed.");
+        } catch (Exception e) {
+            fail("createDocument() failed with exception: " + e);
+        }
+        return id;
+
+    }
+
+    protected String createDocument(String name, String folderId, String typeId, boolean withContent) {
+        VersioningState versioningState = VersioningState.NONE;
+        return createDocument(name, folderId, typeId, versioningState, withContent);
+    }
+
+    protected Properties createDocumentProperties(String name, String typeId) {
+        List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>();
+        properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, name));
+        properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, typeId));
+        Properties props = fFactory.createPropertiesData(properties);
+        return props;
+    }
+
+    protected Properties createFolderProperties(String folderName, String typeId) {
+        List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>();
+        properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, folderName));
+        properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, typeId));
+        Properties props = fFactory.createPropertiesData(properties);
+        return props;
+    }
+
+    protected ContentStream createContent() {
+        ContentStreamDataImpl content = new ContentStreamDataImpl();
+        content.setFileName("data.txt");
+        content.setMimeType("text/plain");
+        int len = 32 * 1024;
+        byte[] b = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x0c, 0x0a,
+                0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x0c, 0x0a }; // 32
+        // Bytes
+        ByteArrayOutputStream ba = new ByteArrayOutputStream(len);
+        try {
+            for (int i = 0; i < 1024; i++)
+                ba.write(b);
+            content.setContent(new ByteArrayInputStream(ba.toByteArray()));
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to fill content stream with data", e);
+        }
+        return content;
+    }
+
+    protected ContentStream createContent(char ch) {
+        ContentStreamDataImpl content = new ContentStreamDataImpl();
+        content.setFileName("data.txt");
+        content.setMimeType("text/plain");
+        int len = 32 * 1024;
+        byte[] b = new byte[32];
+        for (int i = 0; i < 32; i++)
+            b[i] = (byte) Character.getNumericValue(ch);
+        ByteArrayOutputStream ba = new ByteArrayOutputStream(len);
+        try {
+            for (int i = 0; i < 1024; i++)
+                ba.write(b);
+            content.setContent(new ByteArrayInputStream(ba.toByteArray()));
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to fill content stream with data", e);
+        }
+        return content;
+    }
+
+    protected void verifyContentResult(ContentStream sd) {
+        assertEquals("text/plain", sd.getMimeType());
+        assertEquals("data.txt", sd.getFileName());
+        assertEquals(32 * 1024, sd.getBigLength().longValue());
+        byte[] ba = new byte[32];
+        InputStream is = sd.getStream();
+        int counter = 0;
+        try {
+            while (is.read(ba) == ba.length) {
+                ++counter;
+                assertEquals(0x61, ba[0]);
+                assertEquals(0x6e, ba[29]);
+                assertEquals(0x0c, ba[30]);
+                assertEquals(0x0a, ba[31]);
+            }
+        } catch (IOException e) {
+            fail("reading from content stream failed");
+        }
+        assertEquals(1024, counter);
+    }
+
+    protected String getByPath(String id, String path) {
+        ObjectData res = null;
+        try {
+            res = fObjSvc.getObjectByPath(fRepositoryId, path, "*", false, IncludeRelationships.NONE, null, false,
+                    false, null);
+            assertNotNull(res);
+            assertEquals(id, res.getId());
+        } catch (Exception e) {
+            fail("getObject() failed with exception: " + e);
+        }
+        return res.getId();
+    }
+
+    @SuppressWarnings("unchecked")
+    protected String getPathOfFolder(String id) {
+        String path = null;
+        try {
+            String filter = PropertyIds.PATH;
+            Properties res = fObjSvc.getProperties(fRepositoryId, id, filter, null);
+            assertNotNull(res);
+            PropertyData<String> pd = (PropertyData<String>) res.getProperties().get(PropertyIds.PATH);
+            assertNotNull(pd);
+            path = pd.getFirstValue();
+            assertNotNull(path);
+        } catch (Exception e) {
+            fail("getProperties() failed with exception: " + e);
+        }
+        return path;
+    }
+
+    @SuppressWarnings("unchecked")
+    protected String getPathOfDocument(String id) {
+        String path = null;
+        String filter = "*";
+        List<ObjectParentData> parentData = fNavSvc.getObjectParents(fRepositoryId, id, filter, false,
+                IncludeRelationships.NONE, null, true, null);
+        String name = parentData.get(0).getRelativePathSegment();
+        PropertyData<String> pd = (PropertyData<String>) parentData.get(0).getObject().getProperties().getProperties()
+                .get(PropertyIds.PATH);
+        assertNotNull(pd);
+        path = pd.getFirstValue() + "/" + name;
+        return path;
+    }
+
+    protected ObjectData getDocumentObjectData(String id) {
+        ObjectData res = null;
+        try {
+            String returnedId = null;
+            res = fObjSvc.getObject(fRepositoryId, id, "*", false, IncludeRelationships.NONE, null, false, false, null);
+            assertNotNull(res);
+            returnedId = res.getId();
+            testReturnedProperties(returnedId, res.getProperties().getProperties());
+            assertEquals(id, returnedId);
+        } catch (Exception e) {
+            fail("getObject() failed with exception: " + e);
+        }
+        return res;
+    }
+
+    protected String getDocument(String id) {
+        ObjectData res = getDocumentObjectData(id);
+        assertNotNull(res);
+        return res.getId();
+    }
+
+    protected void testReturnedProperties(String objectId, Map<String, PropertyData<?>> props) {
+        for (PropertyData<?> pd : props.values()) {
+            LOG.debug("return property id: " + pd.getId() + ", value: " + pd.getValues());
+        }
+
+        PropertyData<?> pd = props.get(PropertyIds.OBJECT_ID);
+        assertNotNull(pd);
+        assertEquals(objectId, pd.getFirstValue());
+    }
+
+     /**
+     * Instantiates the services by using the client provider interface.
+     *
+     * @param parameters
+     *            configuration parameters for client provider interface and
+     *            in-memory provider
+     */
+    private void initializeUsingLocalBinding(Map<String, String> parameters) {
+
+        LOG.info("Initialize unit test using the local binding interface.");
+
+        // add parameters for local binding:
+        parameters.put(SessionParameter.BINDING_SPI_CLASS, SessionParameter.LOCAL_FACTORY);
+        parameters.put(SessionParameter.LOCAL_FACTORY, InMemoryServiceFactoryImpl.class.getName());
+        parameters.put(ConfigConstants.OVERRIDE_CALL_CONTEXT, "true");
+        InMemoryServiceFactoryImpl.setOverrideCallContext(fTestCallContext);
+
+        // get factory and create binding
+        CmisBindingFactory factory = CmisBindingFactory.newInstance();
+        CmisBinding binding = factory.createCmisLocalBinding(parameters);
+        assertNotNull(binding);
+        fFactory = binding.getObjectFactory();
+        fRepSvc = binding.getRepositoryService();
+        fObjSvc = binding.getObjectService();
+        fNavSvc = binding.getNavigationService();
+        fVerSvc = binding.getVersioningService();
+        fMultiSvc = binding.getMultiFilingService();
+        fDiscSvc = binding.getDiscoveryService();
+    }
+
+    protected String getStringProperty(ObjectData objData, String propertyKey) {
+        PropertyData<? extends Object> pd = (PropertyData<? extends Object>) objData.getProperties().getProperties()
+                .get(PropertyIds.PATH);
+        assertNotNull(pd.getFirstValue());
+        assertTrue(pd.getFirstValue() instanceof String);
+        return (String) pd.getFirstValue();
+    }
+}

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/pom.xml
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/pom.xml?rev=954941&r1=954940&r2=954941&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/pom.xml (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/pom.xml Tue Jun 15 15:51:42 2010
@@ -1,4 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
 
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">