You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/05/08 13:16:28 UTC

git commit: Adding test for creating media entity

Repository: olingo-odata4
Updated Branches:
  refs/heads/master d313bcc4a -> 52c7cc2cc


Adding test for creating media entity


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/52c7cc2c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/52c7cc2c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/52c7cc2c

Branch: refs/heads/master
Commit: 52c7cc2cc60fda83d03131eb2478e932a75a56ff
Parents: d313bcc
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu May 8 13:16:17 2014 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu May 8 13:16:17 2014 +0200

----------------------------------------------------------------------
 .../org/apache/olingo/fit/AbstractServices.java | 54 ++++++++--------
 .../main/java/org/apache/olingo/fit/V4Demo.java | 19 ++++++
 .../olingo/fit/utils/AbstractUtilities.java     |  3 +
 .../org/apache/olingo/fit/utils/Commons.java    | 18 ++++--
 .../apache/olingo/fit/utils/XMLUtilities.java   |  2 +-
 .../olingo/fit/v4/EntityRetrieveTestITCase.java |  2 +-
 .../olingo/fit/v4/MediaEntityTestITCase.java    | 65 ++++++++++++++++++--
 .../olingo/fit/v4/PropertyTestITCase.java       | 15 +++--
 .../olingo/client/core/v4/MetadataTest.java     | 10 +--
 9 files changed, 140 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/52c7cc2c/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
index a7e37f9..2252c55 100644
--- a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
+++ b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
@@ -63,6 +63,7 @@ import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
@@ -411,7 +412,7 @@ public abstract class AbstractServices {
       } else {
         final ResWrap<JSONEntityImpl> jcont = mapper.readValue(IOUtils.toInputStream(changes, Constants.ENCODING),
                 new TypeReference<JSONEntityImpl>() {
-        });
+                });
 
         entryChanges = dataBinder.toAtomEntity(jcont.getPayload());
       }
@@ -419,7 +420,12 @@ public abstract class AbstractServices {
       final ResWrap<AtomEntityImpl> container = atomDeserializer.read(entityInfo.getValue(), AtomEntityImpl.class);
 
       for (Property property : entryChanges.getProperties()) {
-        container.getPayload().getProperty(property.getName()).setValue(property.getValue());
+        final Property _property = container.getPayload().getProperty(property.getName());
+        if (_property == null) {
+          container.getPayload().getProperties().add(property);
+        } else {
+          _property.setValue(property.getValue());
+        }
       }
 
       for (Link link : entryChanges.getNavigationLinks()) {
@@ -567,11 +573,11 @@ public abstract class AbstractServices {
 
         xml.addMediaEntityValue(entitySetName, entityKey, IOUtils.toInputStream(entity, Constants.ENCODING));
 
-        final String id = Commons.getMediaContent().get(entitySetName);
-        if (StringUtils.isNotBlank(id)) {
+        final Pair<String, EdmPrimitiveTypeKind> id = Commons.getMediaContent().get(entitySetName);
+        if (id != null) {
           final AtomPropertyImpl prop = new AtomPropertyImpl();
-          prop.setName(id);
-          prop.setType(EdmPrimitiveTypeKind.Int32.toString());
+          prop.setName(id.getKey());
+          prop.setType(id.getValue().toString());
           prop.setValue(new PrimitiveValueImpl(entityKey));
           entry.getProperties().add(prop);
         }
@@ -593,8 +599,8 @@ public abstract class AbstractServices {
         } else {
           final ResWrap<JSONEntityImpl> jcontainer =
                   mapper.readValue(IOUtils.toInputStream(entity, Constants.ENCODING),
-                  new TypeReference<JSONEntityImpl>() {
-          });
+                          new TypeReference<JSONEntityImpl>() {
+                          });
 
           entry = dataBinder.toAtomEntity(jcontainer.getPayload());
 
@@ -621,7 +627,7 @@ public abstract class AbstractServices {
       ResWrap<AtomEntityImpl> result = atomDeserializer.read(serialization, AtomEntityImpl.class);
       result = new ResWrap<AtomEntityImpl>(
               URI.create(Constants.get(version, ConstantKey.ODATA_METADATA_PREFIX)
-              + entitySetName + Constants.get(version, ConstantKey.ODATA_METADATA_ENTITY_SUFFIX)),
+                      + entitySetName + Constants.get(version, ConstantKey.ODATA_METADATA_ENTITY_SUFFIX)),
               null, result.getPayload());
 
       final String path = Commons.getEntityBasePath(entitySetName, entityKey);
@@ -684,13 +690,13 @@ public abstract class AbstractServices {
               replaceAll("\"Salary\":[0-9]*,", "\"Salary\":0,").
               replaceAll("\"Title\":\".*\"", "\"Title\":\"[Sacked]\"").
               replaceAll("\\<d:Salary m:type=\"Edm.Int32\"\\>.*\\</d:Salary\\>",
-              "<d:Salary m:type=\"Edm.Int32\">0</d:Salary>").
+                      "<d:Salary m:type=\"Edm.Int32\">0</d:Salary>").
               replaceAll("\\<d:Title\\>.*\\</d:Title\\>", "<d:Title>[Sacked]</d:Title>");
 
       final FSManager fsManager = FSManager.instance(version);
       fsManager.putInMemory(IOUtils.toInputStream(newContent, Constants.ENCODING),
               fsManager.getAbsolutePath(Commons.getEntityBasePath("Person", entityId) + Constants.get(version,
-              ConstantKey.ENTITY), utils.getKey()));
+                              ConstantKey.ENTITY), utils.getKey()));
 
       return utils.getValue().createResponse(null, null, null, utils.getKey(), Response.Status.NO_CONTENT);
     } catch (Exception e) {
@@ -742,9 +748,9 @@ public abstract class AbstractServices {
         final Long newSalary = Long.valueOf(salaryMatcher.group(1)) + n;
         newContent = newContent.
                 replaceAll("\"Salary\":" + salaryMatcher.group(1) + ",",
-                "\"Salary\":" + newSalary + ",").
+                        "\"Salary\":" + newSalary + ",").
                 replaceAll("\\<d:Salary m:type=\"Edm.Int32\"\\>" + salaryMatcher.group(1) + "</d:Salary\\>",
-                "<d:Salary m:type=\"Edm.Int32\">" + newSalary + "</d:Salary>");
+                        "<d:Salary m:type=\"Edm.Int32\">" + newSalary + "</d:Salary>");
       }
 
       FSManager.instance(version).putInMemory(IOUtils.toInputStream(newContent, Constants.ENCODING),
@@ -893,7 +899,7 @@ public abstract class AbstractServices {
         } else {
           mapper.writeValue(
                   writer, new JSONFeedContainer(container.getContextURL(), container.getMetadataETag(),
-                  dataBinder.toJSONEntitySet(container.getPayload())));
+                          dataBinder.toJSONEntitySet(container.getPayload())));
         }
 
         return xml.createResponse(
@@ -1555,8 +1561,8 @@ public abstract class AbstractServices {
               mapper.writeValue(
                       writer,
                       new JSONFeedContainer(container.getContextURL(),
-                      container.getMetadataETag(),
-                      dataBinder.toJSONEntitySet((AtomEntitySetImpl) container.getPayload())));
+                              container.getMetadataETag(),
+                              dataBinder.toJSONEntitySet((AtomEntitySetImpl) container.getPayload())));
             }
           } else {
             final ResWrap<Entity> container =
@@ -1569,8 +1575,8 @@ public abstract class AbstractServices {
               mapper.writeValue(
                       writer,
                       new JSONEntryContainer(container.getContextURL(),
-                      container.getMetadataETag(),
-                      dataBinder.toJSONEntityType((AtomEntityImpl) container.getPayload())));
+                              container.getMetadataETag(),
+                              dataBinder.toJSONEntityType((AtomEntityImpl) container.getPayload())));
             }
           }
 
@@ -1640,9 +1646,9 @@ public abstract class AbstractServices {
 
     final ResWrap<AtomPropertyImpl> container = new ResWrap<AtomPropertyImpl>(
             URI.create(Constants.get(version, ConstantKey.ODATA_METADATA_PREFIX)
-            + (version.compareTo(ODataServiceVersion.V40) >= 0
-            ? entitySetName + "(" + entityId + ")/" + path
-            : property.getType())),
+                    + (version.compareTo(ODataServiceVersion.V40) >= 0
+                    ? entitySetName + "(" + entityId + ")/" + path
+                    : property.getType())),
             entryContainer.getMetadataETag(),
             property);
 
@@ -1650,9 +1656,9 @@ public abstract class AbstractServices {
             null,
             searchForValue
             ? IOUtils.toInputStream(
-            container.getPayload().getValue() == null || container.getPayload().getValue().isNull()
-            ? StringUtils.EMPTY
-            : container.getPayload().getValue().asPrimitive().get(), Constants.ENCODING)
+                    container.getPayload().getValue() == null || container.getPayload().getValue().isNull()
+                    ? StringUtils.EMPTY
+                    : container.getPayload().getValue().asPrimitive().get(), Constants.ENCODING)
             : utils.writeProperty(acceptType, container),
             Commons.getETag(Commons.getEntityBasePath(entitySetName, entityId), version),
             acceptType);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/52c7cc2c/fit/src/main/java/org/apache/olingo/fit/V4Demo.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/V4Demo.java b/fit/src/main/java/org/apache/olingo/fit/V4Demo.java
index c00d14a..8f54ede 100644
--- a/fit/src/main/java/org/apache/olingo/fit/V4Demo.java
+++ b/fit/src/main/java/org/apache/olingo/fit/V4Demo.java
@@ -39,6 +39,7 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 import org.apache.olingo.fit.metadata.Metadata;
+import org.apache.olingo.fit.methods.PATCH;
 import org.apache.olingo.fit.utils.Accept;
 import org.apache.olingo.fit.utils.ConstantKey;
 import org.apache.olingo.fit.utils.Constants;
@@ -140,6 +141,24 @@ public class V4Demo {
     return replaceServiceName(services.postNewEntity(uriInfo, accept, contentType, prefer, entitySetName, entity));
   }
 
+  @PATCH
+  @Path("/{entitySetName}({entityId})")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
+  @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
+  public Response patchEntity(
+          @Context UriInfo uriInfo,
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
+          @HeaderParam("Content-Type") @DefaultValue(StringUtils.EMPTY) String contentType,
+          @HeaderParam("Prefer") @DefaultValue(StringUtils.EMPTY) String prefer,
+          @HeaderParam("If-Match") @DefaultValue(StringUtils.EMPTY) String ifMatch,
+          @PathParam("entitySetName") String entitySetName,
+          @PathParam("entityId") String entityId,
+          final String changes) {
+
+    return replaceServiceName(
+            services.patchEntity(uriInfo, accept, contentType, prefer, ifMatch, entitySetName, entityId, changes));
+  }
+
   @PUT
   @Produces({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
   @Consumes({MediaType.WILDCARD, MediaType.APPLICATION_OCTET_STREAM})

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/52c7cc2c/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
index f202fc4..4dbd912 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
@@ -35,6 +35,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.UUID;
 import java.util.regex.Pattern;
 import javax.ws.rs.NotFoundException;
 import javax.ws.rs.core.Response;
@@ -741,6 +742,8 @@ public abstract class AbstractUtilities {
         Commons.SEQUENCE.put("Products", productId);
       } else if ("PaymentInstrument".equals(entitySetName)) {
         res = getDefaultEntryKey(entitySetName, entry, "PaymentInstrumentID");
+      } else if ("Advertisements".equals(entitySetName)) {
+        res = UUID.randomUUID().toString();
       } else {
         throw new Exception(String.format("EntitySet '%s' not found", entitySetName));
       }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/52c7cc2c/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java b/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
index 6724d57..2746637 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
@@ -43,6 +43,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.regex.Pattern;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 import org.apache.olingo.commons.core.data.AtomSerializer;
 import org.apache.olingo.commons.core.op.InjectableSerializerProvider;
@@ -75,7 +78,8 @@ public abstract class Commons {
 
   protected static final Map<String, Integer> SEQUENCE = new HashMap<String, Integer>();
 
-  protected static final Map<String, String> MEDIA_CONTENT = new HashMap<String, String>();
+  protected static final Map<String, Pair<String, EdmPrimitiveTypeKind>> MEDIA_CONTENT =
+          new HashMap<String, Pair<String, EdmPrimitiveTypeKind>>();
 
   static {
     SEQUENCE.put("Customer", 1000);
@@ -93,9 +97,13 @@ public abstract class Commons {
     SEQUENCE.put("ProductDetails", 1000);
     SEQUENCE.put("PaymentInstrument", 10192);
 
-    MEDIA_CONTENT.put("CustomerInfo", "CustomerinfoId");
-    MEDIA_CONTENT.put("Car", "VIN");
+    MEDIA_CONTENT.put("CustomerInfo",
+            new ImmutablePair<String, EdmPrimitiveTypeKind>("CustomerinfoId", EdmPrimitiveTypeKind.Int32));
+    MEDIA_CONTENT.put("Car",
+            new ImmutablePair<String, EdmPrimitiveTypeKind>("VIN", EdmPrimitiveTypeKind.Int32));
     MEDIA_CONTENT.put("Car/Photo", null);
+    MEDIA_CONTENT.put("Advertisements",
+            new ImmutablePair<String, EdmPrimitiveTypeKind>("ID", EdmPrimitiveTypeKind.Guid));
   }
 
   public static FITAtomDeserializer getAtomDeserializer(final ODataServiceVersion version) {
@@ -143,7 +151,7 @@ public abstract class Commons {
     return METADATA.get(version);
   }
 
-  public static Map<String, String> getMediaContent() {
+  public static Map<String, Pair<String, EdmPrimitiveTypeKind>> getMediaContent() {
     return MEDIA_CONTENT;
   }
 
@@ -182,7 +190,7 @@ public abstract class Commons {
     try {
       return FSManager.instance(version)
               .getAbsolutePath(basePath + Constants.get(version, ConstantKey.LINKS_FILE_PATH)
-              + File.separatorChar + linkName, accept);
+                      + File.separatorChar + linkName, accept);
     } catch (Exception e) {
       throw new IOException(e);
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/52c7cc2c/fit/src/main/java/org/apache/olingo/fit/utils/XMLUtilities.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/XMLUtilities.java b/fit/src/main/java/org/apache/olingo/fit/utils/XMLUtilities.java
index 5edb05f..75c45e9 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/XMLUtilities.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/XMLUtilities.java
@@ -500,7 +500,7 @@ public class XMLUtilities extends AbstractUtilities {
     return IOUtils.toInputStream(newContent, "UTF-8");
   }
 
-  public InputStream addAtomContent(
+  private InputStream addAtomContent(
           final InputStream content, final String title, final String href)
           throws Exception {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/52c7cc2c/fit/src/test/java/org/apache/olingo/fit/v4/EntityRetrieveTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/v4/EntityRetrieveTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/v4/EntityRetrieveTestITCase.java
index bb6918b..b012485 100644
--- a/fit/src/test/java/org/apache/olingo/fit/v4/EntityRetrieveTestITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/v4/EntityRetrieveTestITCase.java
@@ -245,7 +245,7 @@ public class EntityRetrieveTestITCase extends AbstractTestITCase {
   }
 
   @Test
-  public void checkForETagAsATOM() {
+  public void checkForETagAsAtom() {
     checkForETag(client, ODataPubFormat.ATOM);
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/52c7cc2c/fit/src/test/java/org/apache/olingo/fit/v4/MediaEntityTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/v4/MediaEntityTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/v4/MediaEntityTestITCase.java
index 459b246..aead4c2 100644
--- a/fit/src/test/java/org/apache/olingo/fit/v4/MediaEntityTestITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/v4/MediaEntityTestITCase.java
@@ -25,13 +25,22 @@ import static org.junit.Assert.assertTrue;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
+import java.util.Calendar;
+import java.util.Collection;
 import java.util.UUID;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.olingo.client.api.communication.header.HeaderName;
+import org.apache.olingo.client.api.communication.request.cud.ODataEntityUpdateRequest;
+import org.apache.olingo.client.api.communication.request.cud.v4.UpdateType;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataMediaRequest;
+import org.apache.olingo.client.api.communication.request.streamed.MediaEntityCreateStreamManager;
 import org.apache.olingo.client.api.communication.request.streamed.MediaEntityUpdateStreamManager;
+import org.apache.olingo.client.api.communication.request.streamed.ODataMediaEntityCreateRequest;
 import org.apache.olingo.client.api.communication.request.streamed.ODataMediaEntityUpdateRequest;
+import org.apache.olingo.client.api.communication.response.ODataEntityUpdateResponse;
+import org.apache.olingo.client.api.communication.response.ODataMediaEntityCreateResponse;
 import org.apache.olingo.client.api.communication.response.ODataMediaEntityUpdateResponse;
 import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
 import org.apache.olingo.client.api.uri.v4.URIBuilder;
@@ -40,6 +49,7 @@ import org.apache.olingo.client.core.ODataClientFactory;
 import org.apache.olingo.commons.api.domain.v4.ODataEntity;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.format.ODataPubFormat;
 import org.junit.Test;
 
@@ -82,9 +92,56 @@ public class MediaEntityTestITCase extends AbstractTestITCase {
     read(client, ODataPubFormat.JSON_FULL_METADATA);
   }
 
-  private void update(final ODataClient client, final ODataPubFormat format)
-          throws IOException, EdmPrimitiveTypeException {
+  private void create(final ODataPubFormat format) throws IOException {
+    final String random = RandomStringUtils.random(110);
+    final InputStream input = IOUtils.toInputStream(random);
 
+    final URI uri = client.getURIBuilder(testDemoServiceRootURL).appendEntitySetSegment("Advertisements").build();
+    final ODataMediaEntityCreateRequest<ODataEntity> createReq =
+            client.getStreamedRequestFactory().getMediaEntityCreateRequest(uri, input);
+    final MediaEntityCreateStreamManager<ODataEntity> streamManager = createReq.execute();
+
+    final ODataMediaEntityCreateResponse<ODataEntity> createRes = streamManager.getResponse();
+    assertEquals(201, createRes.getStatusCode());
+
+    final Collection<String> location = createRes.getHeader(HeaderName.location);
+    assertNotNull(location);
+    final URI createdLocation = URI.create(location.iterator().next());
+
+    final ODataEntity changes = client.getObjectFactory().
+            newEntity(new FullQualifiedName("ODataDemo.Advertisement"));
+    changes.getProperties().add(client.getObjectFactory().newPrimitiveProperty("AirDate",
+            getClient().getObjectFactory().newPrimitiveValueBuilder().
+            setType(EdmPrimitiveTypeKind.DateTimeOffset).setValue(Calendar.getInstance()).build()));
+
+    final ODataEntityUpdateRequest<ODataEntity> updateReq = getClient().getCUDRequestFactory().
+            getEntityUpdateRequest(createdLocation, UpdateType.PATCH, changes);
+    updateReq.setFormat(format);
+
+    final ODataEntityUpdateResponse<ODataEntity> updateRes = updateReq.execute();
+    assertEquals(204, updateRes.getStatusCode());
+
+    final ODataMediaRequest retrieveReq = client.getRetrieveRequestFactory().
+            getMediaRequest(client.getURIBuilder(createdLocation.toASCIIString()).appendValueSegment().build());
+    final ODataRetrieveResponse<InputStream> retrieveRes = retrieveReq.execute();
+    assertEquals(200, retrieveRes.getStatusCode());
+
+    final byte[] actual = new byte[Integer.parseInt(retrieveRes.getHeader("Content-Length").iterator().next())];
+    IOUtils.read(retrieveRes.getBody(), actual, 0, actual.length);
+    assertEquals(random, new String(actual));
+  }
+
+  @Test
+  public void createAsAtom() throws IOException {
+    create(ODataPubFormat.ATOM);
+  }
+
+  @Test
+  public void createAsJSON() throws IOException {
+    create(ODataPubFormat.JSON);
+  }
+
+  private void update(final ODataPubFormat format) throws IOException, EdmPrimitiveTypeException {
     final URI uri = client.getURIBuilder(testDemoServiceRootURL).
             appendEntitySetSegment("Advertisements").
             appendKeySegment(UUID.fromString("f89dee73-af9f-4cd4-b330-db93c25ff3c7")).appendValueSegment().build();
@@ -112,11 +169,11 @@ public class MediaEntityTestITCase extends AbstractTestITCase {
 
   @Test
   public void updateAsAtom() throws IOException, EdmPrimitiveTypeException {
-    update(client, ODataPubFormat.ATOM);
+    update(ODataPubFormat.ATOM);
   }
 
   @Test
   public void updateAsJSON() throws IOException, EdmPrimitiveTypeException {
-    update(client, ODataPubFormat.JSON);
+    update(ODataPubFormat.JSON);
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/52c7cc2c/fit/src/test/java/org/apache/olingo/fit/v4/PropertyTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/v4/PropertyTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/v4/PropertyTestITCase.java
index 2c8046b..2b653b7 100644
--- a/fit/src/test/java/org/apache/olingo/fit/v4/PropertyTestITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/v4/PropertyTestITCase.java
@@ -112,6 +112,11 @@ public class PropertyTestITCase extends AbstractTestITCase {
     complex(edmClient, ODataFormat.JSON);
   }
 
+  @Test
+  public void complexFromFullJSON() {
+    complex(client, ODataFormat.JSON_FULL_METADATA);
+  }
+
   private void updateComplexProperty(final ODataFormat format, final UpdateType type) throws IOException {
     final URIBuilder uriBuilder = client.getURIBuilder(testStaticServiceRootURL).
             appendEntitySetSegment("Customers").appendKeySegment(1).appendPropertySegment("HomeAddress");
@@ -123,9 +128,8 @@ public class PropertyTestITCase extends AbstractTestITCase {
     ODataRetrieveResponse<ODataProperty> retrieveRes = retrieveReq.execute();
     assertEquals(200, retrieveRes.getStatusCode());
 
-    ODataProperty homeAddress =
-            client.getObjectFactory().newComplexProperty("HomeAddress",
-                    client.getObjectFactory().newComplexValue(retrieveRes.getBody().getComplexValue().getTypeName()));
+    ODataProperty homeAddress = client.getObjectFactory().newComplexProperty("HomeAddress",
+            client.getObjectFactory().newComplexValue(retrieveRes.getBody().getComplexValue().getTypeName()));
 
     homeAddress.getComplexValue().add(client.getObjectFactory().
             newPrimitiveProperty("City", client.getObjectFactory().newPrimitiveValueBuilder().buildString("Pescara")));
@@ -153,11 +157,6 @@ public class PropertyTestITCase extends AbstractTestITCase {
   }
 
   @Test
-  public void complexFromFullJSON() {
-    complex(client, ODataFormat.JSON_FULL_METADATA);
-  }
-
-  @Test
   public void patchComplexPropertyAsJSON() throws IOException {
     updateComplexProperty(ODataFormat.JSON_FULL_METADATA, UpdateType.PATCH);
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/52c7cc2c/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
index ace8960..8ca024a 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
@@ -18,6 +18,11 @@
  */
 package org.apache.olingo.client.core.v4;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
 import org.apache.olingo.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.client.api.edm.xml.v4.Annotations;
 import org.apache.olingo.client.api.edm.xml.v4.ComplexType;
@@ -60,11 +65,6 @@ import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmInt32;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
 import org.junit.Test;
 
 public class MetadataTest extends AbstractTest {