You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2013/12/18 15:05:02 UTC
git commit: [OLINGO-86] Test for 'readBinary'
Updated Branches:
refs/heads/master e4a0e70ef -> 0a9439c53
[OLINGO-86] Test for 'readBinary'
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/commit/0a9439c5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/tree/0a9439c5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/diff/0a9439c5
Branch: refs/heads/master
Commit: 0a9439c53ba962b06eaa6206749bc846f2ade9c5
Parents: e4a0e70
Author: Michael Bolz <mi...@apache.org>
Authored: Wed Dec 18 15:03:35 2013 +0100
Committer: Michael Bolz <mi...@apache.org>
Committed: Wed Dec 18 15:03:35 2013 +0100
----------------------------------------------------------------------
.../annotation/data/AnnotationInMemoryDs.java | 26 +++++++---
.../data/AnnotationsInMemoryDsTest.java | 54 ++++++++++++++++++++
2 files changed, 74 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/0a9439c5/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/core/annotation/data/AnnotationInMemoryDs.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/core/annotation/data/AnnotationInMemoryDs.java b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/core/annotation/data/AnnotationInMemoryDs.java
index 640662f..a53ee8f 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/core/annotation/data/AnnotationInMemoryDs.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/core/annotation/data/AnnotationInMemoryDs.java
@@ -175,8 +175,16 @@ public class AnnotationInMemoryDs implements DataSource {
Object data = ANNOTATION_HELPER.getValueForField(mediaLinkEntryData, EdmMediaResourceContent.class);
Object mimeType = ANNOTATION_HELPER.getValueForField(mediaLinkEntryData, EdmMediaResourceMimeType.class);
- BinaryData db = new BinaryData((byte[]) data, String.valueOf(mimeType));
- return db;
+ if(data == null && mimeType == null) {
+ DataStore<Object> dataStore = getDataStore(entitySet);
+ Object readEntry = dataStore.read(mediaLinkEntryData);
+ if(readEntry != null) {
+ data = ANNOTATION_HELPER.getValueForField(readEntry, EdmMediaResourceContent.class);
+ mimeType = ANNOTATION_HELPER.getValueForField(readEntry, EdmMediaResourceMimeType.class);
+ }
+ }
+
+ return new BinaryData((byte[]) data, String.valueOf(mimeType));
}
@Override
@@ -197,10 +205,16 @@ public class AnnotationInMemoryDs implements DataSource {
throws ODataNotImplementedException, ODataNotFoundException, EdmException, ODataApplicationException {
try {
- ANNOTATION_HELPER.setValueForAnnotatedField(
- mediaEntityInstance, EdmMediaResourceContent.class, binaryData.getData());
- ANNOTATION_HELPER.setValueForAnnotatedField(
- mediaEntityInstance, EdmMediaResourceMimeType.class, binaryData.getMimeType());
+ DataStore<Object> dataStore = getDataStore(entitySet);
+ Object readEntry = dataStore.read(mediaEntityInstance);
+ if(readEntry == null) {
+ throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
+ } else {
+ ANNOTATION_HELPER.setValueForAnnotatedField(
+ mediaEntityInstance, EdmMediaResourceContent.class, binaryData.getData());
+ ANNOTATION_HELPER.setValueForAnnotatedField(
+ mediaEntityInstance, EdmMediaResourceMimeType.class, binaryData.getMimeType());
+ }
} catch (ODataAnnotationException e) {
throw new ODataRuntimeException("Invalid media resource annotation at entity set '" + entitySet.getName()
+ "' with message '" + e.getMessage() + "'.", e);
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/0a9439c5/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/core/annotation/data/AnnotationsInMemoryDsTest.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/core/annotation/data/AnnotationsInMemoryDsTest.java b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/core/annotation/data/AnnotationsInMemoryDsTest.java
index 82becde..8b0e5d8 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/core/annotation/data/AnnotationsInMemoryDsTest.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/core/annotation/data/AnnotationsInMemoryDsTest.java
@@ -15,6 +15,7 @@
*/
package org.apache.olingo.odata2.core.annotation.data;
+import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -27,6 +28,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.olingo.odata2.api.annotation.edm.EdmKey;
import org.apache.olingo.odata2.api.annotation.edm.EdmProperty;
import org.apache.olingo.odata2.api.data.DataSource;
+import org.apache.olingo.odata2.api.data.DataSource.BinaryData;
import org.apache.olingo.odata2.api.edm.EdmEntitySet;
import org.apache.olingo.odata2.api.edm.EdmEntityType;
import org.apache.olingo.odata2.api.edm.FullQualifiedName;
@@ -157,6 +159,58 @@ public class AnnotationsInMemoryDsTest {
return new Thread(run);
}
+
+ @Test
+ public void readBinaryData() throws Exception {
+ EdmEntitySet entitySet = createMockedEdmEntitySet("Photos");
+
+ DataStore<Photo> photoDataStore = datasource.getDataStore(Photo.class);
+ Photo photo = new Photo();
+ photo.setName("SomePic");
+ photo.setType("PNG");
+ byte[] image = "binary".getBytes(Charset.defaultCharset());
+ photo.setImage(image);
+ photo.setImageType("image/png");
+ Photo createdPhoto = photoDataStore.create(photo);
+
+// datasource.createData(entitySet, data);
+
+ Map<String, Object> keys = new HashMap<String, Object>();
+ keys.put("Name", "SomePic");
+ keys.put("ImageFormat", "PNG");
+ photo = (Photo) datasource.readData(entitySet, keys);
+ BinaryData readPhoto = datasource.readBinaryData(entitySet, photo);
+
+ Assert.assertEquals("binary", new String(readPhoto.getData(), Charset.defaultCharset()));
+ Assert.assertArrayEquals(image, readPhoto.getData());
+ Assert.assertEquals("image/png", readPhoto.getMimeType());
+ }
+
+ @Test
+ public void readBinaryDataDirect() throws Exception {
+ EdmEntitySet entitySet = createMockedEdmEntitySet("Photos");
+
+ DataStore<Photo> photoDataStore = datasource.getDataStore(Photo.class);
+ Photo photo = new Photo();
+ photo.setName("SomePic");
+ photo.setType("PNG");
+ byte[] image = "binary".getBytes(Charset.defaultCharset());
+ photo.setImage(image);
+ photo.setImageType("image/png");
+ Photo createdPhoto = photoDataStore.create(photo);
+
+ photo = new Photo();
+ photo.setName("SomePic");
+ photo.setType("PNG");
+ photo.setImage(null);
+ photo.setImageType(null);
+
+ BinaryData readPhoto = datasource.readBinaryData(entitySet, photo);
+
+ Assert.assertEquals("binary", new String(readPhoto.getData(), Charset.defaultCharset()));
+ Assert.assertArrayEquals(image, readPhoto.getData());
+ Assert.assertEquals("image/png", readPhoto.getMimeType());
+ }
@Test
@SuppressWarnings("unchecked")