Author: fguillaume
Date: Thu Sep 23 18:57:48 2010
New Revision: 1000580
URL: http://svn.apache.org/viewvc?rev=1000580&view=rev
Log:
CMIS-253: make doc.getContentStream return null when there's no content stream
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/Document.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/ObjectServiceImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentDocumentImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-fit/src/test/java/org/apache/chemistry/opencmis/fit/runtime/AbstractReadOnlyContentStreamIT.java
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/Document.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/Document.java?rev=1000580&r1=1000579&r2=1000580&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/Document.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/Document.java
Thu Sep 23 18:57:48 2010
@@ -41,12 +41,16 @@ public interface Document extends Fileab
/**
* Retrieves the content stream of this document.
+ *
+ * @return the content stream, or {...@code null}
*/
ContentStream getContentStream();
/**
* Retrieves the content stream that is associated with the given stream
id.
* This is usually a rendition of the document.
+ *
+ * @return the content stream, or {...@code null}
*/
ContentStream getContentStream(String streamId);
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/ObjectServiceImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/ObjectServiceImpl.java?rev=1000580&r1=1000579&r2=1000580&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/ObjectServiceImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/ObjectServiceImpl.java
Thu Sep 23 18:57:48 2010
@@ -47,6 +47,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException;
+import
org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException;
import org.apache.chemistry.opencmis.commons.impl.Constants;
@@ -396,7 +397,7 @@ public class ObjectServiceImpl extends A
String link = loadLink(repositoryId, objectId,
AtomPubParser.LINK_REL_CONTENT, null);
if (link == null) {
- throwLinkException(repositoryId, objectId,
AtomPubParser.LINK_REL_CONTENT, null);
+ throw new CmisConstraintException("No content stream");
}
UrlBuilder url = new UrlBuilder(link);
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentDocumentImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentDocumentImpl.java?rev=1000580&r1=1000579&r2=1000580&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentDocumentImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentDocumentImpl.java
Thu Sep 23 18:57:48 2010
@@ -39,6 +39,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.data.ObjectData;
import org.apache.chemistry.opencmis.commons.enums.Updatability;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
+import
org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
import org.apache.chemistry.opencmis.commons.spi.Holder;
@@ -260,8 +261,14 @@ public class PersistentDocumentImpl exte
String objectId = getObjectId();
// get the stream
- ContentStream contentStream =
getBinding().getObjectService().getContentStream(getRepositoryId(), objectId,
- streamId, null, null, null);
+ ContentStream contentStream;
+ try {
+ contentStream =
getBinding().getObjectService().getContentStream(getRepositoryId(), objectId,
streamId,
+ null, null, null);
+ } catch (CmisConstraintException e) {
+ // no content stream
+ return null;
+ }
// the AtomPub binding doesn't return a file name
// -> get the file name from properties, if present
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java?rev=1000580&r1=1000579&r2=1000580&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
Thu Sep 23 18:57:48 2010
@@ -901,7 +901,9 @@ public class InMemoryObjectServiceImpl e
}
private ContentStream getContentStream(StoredObject so, String streamId,
BigInteger offset, BigInteger length) {
-
+ if (streamId != null) {
+ return null;
+ }
long lOffset = offset == null ? 0 : offset.longValue();
long lLength = length == null ? -1 : length.longValue();
ContentStream csd = ((Content) so).getContent(lOffset, lLength);
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-fit/src/test/java/org/apache/chemistry/opencmis/fit/runtime/AbstractReadOnlyContentStreamIT.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-fit/src/test/java/org/apache/chemistry/opencmis/fit/runtime/AbstractReadOnlyContentStreamIT.java?rev=1000580&r1=1000579&r2=1000580&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-fit/src/test/java/org/apache/chemistry/opencmis/fit/runtime/AbstractReadOnlyContentStreamIT.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-fit/src/test/java/org/apache/chemistry/opencmis/fit/runtime/AbstractReadOnlyContentStreamIT.java
Thu Sep 23 18:57:48 2010
@@ -51,6 +51,10 @@ public abstract class AbstractReadOnlyCo
Assert.assertNotNull(b);
Assert.assertTrue(b.length > 0);
+
+ // unknown content stream -> null
+ s = document.getContentStream("nosuchstream");
+ Assert.assertNull(s);
}
}