[OLINGO-1024] Fix media resource annotations
diff --git a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProvider.java b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProvider.java
index 81546a7..9dd6bd8 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProvider.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProvider.java
@@ -41,6 +41,8 @@
import org.apache.olingo.odata2.api.annotation.edm.EdmFacets;
import org.apache.olingo.odata2.api.annotation.edm.EdmKey;
import org.apache.olingo.odata2.api.annotation.edm.EdmMediaResourceContent;
+import org.apache.olingo.odata2.api.annotation.edm.EdmMediaResourceMimeType;
+import org.apache.olingo.odata2.api.annotation.edm.EdmMediaResourceSource;
import org.apache.olingo.odata2.api.annotation.edm.EdmNavigationProperty;
import org.apache.olingo.odata2.api.annotation.edm.EdmProperty;
import org.apache.olingo.odata2.api.annotation.edm.EdmType;
@@ -63,6 +65,7 @@
import org.apache.olingo.odata2.api.edm.provider.Facets;
import org.apache.olingo.odata2.api.edm.provider.FunctionImport;
import org.apache.olingo.odata2.api.edm.provider.Key;
+import org.apache.olingo.odata2.api.edm.provider.Mapping;
import org.apache.olingo.odata2.api.edm.provider.NavigationProperty;
import org.apache.olingo.odata2.api.edm.provider.Property;
import org.apache.olingo.odata2.api.edm.provider.PropertyRef;
@@ -336,6 +339,8 @@
final private String name;
private boolean isAbstract = false;
private boolean isMediaResource = false;
+ private String mediaResourceMimeTypeKey;
+ private String mediaResourceSourceKey;
private FullQualifiedName baseEntityType = null;
private final List<PropertyRef> keyProperties = new ArrayList<PropertyRef>();
private final List<Property> properties = new ArrayList<Property>();
@@ -366,11 +371,20 @@
for (Field field : fields) {
EdmProperty ep = field.getAnnotation(EdmProperty.class);
if (ep != null) {
- properties.add(createProperty(ep, field));
+ Property property = createProperty(ep, field);
+ properties.add(property);
EdmKey eti = field.getAnnotation(EdmKey.class);
if (eti != null) {
keyProperties.add(createKeyProperty(ep, field));
}
+ EdmMediaResourceMimeType emrmt = field.getAnnotation(EdmMediaResourceMimeType.class);
+ if (emrmt !=null) {
+ mediaResourceMimeTypeKey = property.getName();
+ }
+ EdmMediaResourceSource emrs = field.getAnnotation(EdmMediaResourceSource.class);
+ if (emrs !=null) {
+ mediaResourceSourceKey = property.getName();
+ }
}
EdmNavigationProperty enp = field.getAnnotation(EdmNavigationProperty.class);
if (enp != null) {
@@ -434,7 +448,9 @@
return entityType.setName(name)
.setAbstract(isAbstract)
.setHasStream(isMediaResource)
- .setProperties(properties);
+ .setProperties(properties)
+ .setMapping(new Mapping().setMediaResourceMimeTypeKey(mediaResourceMimeTypeKey)
+ .setMediaResourceSourceKey(mediaResourceSourceKey));
}
public Collection<Association> buildAssociations() {
diff --git a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProviderTest.java b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProviderTest.java
index 4d2f077..778d349 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProviderTest.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProviderTest.java
@@ -401,6 +401,8 @@
assertTrue(containsProperty(properties, "Image"));
assertFalse(photo.isAbstract());
assertTrue(photo.isHasStream());
+ assertEquals("MimeType",photo.getMapping().getMediaResourceMimeTypeKey());
+ assertEquals("ImageUrl",photo.getMapping().getMediaResourceSourceKey());
Key photoKey = photo.getKey();
List<PropertyRef> keyReferences = photoKey.getKeys();