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">