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 2015/11/22 18:46:24 UTC

[1/3] olingo-odata2 git commit: [OLINGO-822] Support skip facets in expand for XML producer

Repository: olingo-odata2
Updated Branches:
  refs/heads/master 352a82c3c -> 843fba144


[OLINGO-822] Support skip facets in expand for XML producer


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

Branch: refs/heads/master
Commit: bdaec2fa9b8fb59c5b98fb8c2b099e9f0ef91e0a
Parents: f8bbd74
Author: mibo <mi...@mirb.de>
Authored: Sun Nov 15 20:49:53 2015 +0100
Committer: mibo <mi...@mirb.de>
Committed: Sun Nov 15 20:49:53 2015 +0100

----------------------------------------------------------------------
 .../api/ep/callback/WriteCallbackContext.java   | 21 +++++++
 .../ep/producer/AtomEntryEntityProducer.java    | 12 ++--
 .../odata2/core/ep/producer/MyCallback.java     | 13 +++--
 .../core/ep/producer/XmlExpandProducerTest.java | 59 +++++++++++++++++++-
 4 files changed, 92 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bdaec2fa/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/callback/WriteCallbackContext.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/callback/WriteCallbackContext.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/callback/WriteCallbackContext.java
index 7659765..f4143bb 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/callback/WriteCallbackContext.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/callback/WriteCallbackContext.java
@@ -25,6 +25,7 @@ import org.apache.olingo.odata2.api.edm.EdmEntitySet;
 import org.apache.olingo.odata2.api.edm.EdmException;
 import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
 import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
 import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
 
 /**
@@ -37,6 +38,7 @@ public abstract class WriteCallbackContext {
   private EdmNavigationProperty navigationProperty;
   private Map<String, Object> entryData;
   private ExpandSelectTreeNode currentNode;
+  private EntityProviderWriteProperties currentWriteProperties;
 
   /**
    * Current means the node pointing to the target entity set
@@ -118,4 +120,23 @@ public abstract class WriteCallbackContext {
     }
     return key;
   }
+
+  /**
+   * EntityProviderWriteProperties of outer producer.
+   *
+   * @param currentWriteProperties of outer producer.
+   */
+  public void setCurrentWriteProperties(EntityProviderWriteProperties currentWriteProperties) {
+    this.currentWriteProperties = currentWriteProperties;
+  }
+
+  /**
+   * EntityProviderWriteProperties which were set by outer producer or <code>null</code>
+   * if not supported.
+   *
+   * @return set by outer producer or <code>null</code> if not supported.
+   */
+  public EntityProviderWriteProperties getCurrentWriteProperties() {
+    return currentWriteProperties;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bdaec2fa/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
index c8da1d8..5e92500 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
@@ -262,6 +262,7 @@ public class AtomEntryEntityProducer {
         context.setSourceEntitySet(eia.getEntitySet());
         context.setNavigationProperty(navProp);
         context.setEntryData(data);
+        context.setCurrentWriteProperties(properties);
         ExpandSelectTreeNode subNode = properties.getExpandSelectTree().getLinks().get(navigationPropertyName);
         context.setCurrentExpandSelectTreeNode(subNode);
         context.setSelfLink(new URI(self));
@@ -270,7 +271,7 @@ public class AtomEntryEntityProducer {
         if (callback == null) {
           throw new EntityProviderException(EntityProviderException.EXPANDNOTSUPPORTED);
         }
-        WriteFeedCallbackResult result = null;
+        WriteFeedCallbackResult result;
         try {
           result = ((OnWriteFeedContent) callback).retrieveFeedResult(context);
         } catch (ODataApplicationException e) {
@@ -304,6 +305,7 @@ public class AtomEntryEntityProducer {
         EdmNavigationProperty navProp = (EdmNavigationProperty) eia.getEntityType().getProperty(navigationPropertyName);
         WriteEntryCallbackContext context = new WriteEntryCallbackContext();
         context.setSourceEntitySet(eia.getEntitySet());
+        context.setCurrentWriteProperties(properties);
         context.setNavigationProperty(navProp);
         context.setEntryData(data);
         ExpandSelectTreeNode subNode = properties.getExpandSelectTree().getLinks().get(navigationPropertyName);
@@ -313,7 +315,7 @@ public class AtomEntryEntityProducer {
         if (callback == null) {
           throw new EntityProviderException(EntityProviderException.EXPANDNOTSUPPORTED);
         }
-        WriteEntryCallbackResult result = null;
+        WriteEntryCallbackResult result;
         try {
           result = ((OnWriteEntryContent) callback).retrieveEntryResult(context);
         } catch (ODataApplicationException e) {
@@ -461,9 +463,7 @@ public class AtomEntryEntityProducer {
     if (updateDate == null) {
       updateDate = new Date();
     }
-    String valueToString =
-        EdmDateTimeOffset.getInstance().valueToString(updateDate, EdmLiteralKind.DEFAULT, updateFacets);
-    return valueToString;
+    return EdmDateTimeOffset.getInstance().valueToString(updateDate, EdmLiteralKind.DEFAULT, updateFacets);
   }
 
   private String getTargetPathValue(final EntityInfoAggregator eia, final String targetPath,
@@ -608,7 +608,7 @@ public class AtomEntryEntityProducer {
   private boolean isNotMappedViaCustomMapping(final EntityPropertyInfo propertyInfo) {
     EdmCustomizableFeedMappings customMapping = propertyInfo.getCustomMapping();
     if (customMapping != null && customMapping.isFcKeepInContent() != null) {
-      return customMapping.isFcKeepInContent().booleanValue();
+      return customMapping.isFcKeepInContent();
     }
     return true;
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bdaec2fa/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/MyCallback.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/MyCallback.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/MyCallback.java
index bdea75a..25770bf 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/MyCallback.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/MyCallback.java
@@ -61,16 +61,21 @@ public class MyCallback implements OnWriteEntryContent, OnWriteFeedContent {
             callbacks.put(navPropName, this);
           }
           EntityProviderWriteProperties inlineProperties =
-              EntityProviderWriteProperties.serviceRoot(baseUri).callbacks(callbacks).expandSelectTree(
-                  context.getCurrentExpandSelectTreeNode()).selfLink(context.getSelfLink()).build();
+              EntityProviderWriteProperties.serviceRoot(baseUri).callbacks(callbacks)
+                  .expandSelectTree(context.getCurrentExpandSelectTreeNode())
+                  .selfLink(context.getSelfLink())
+                  .validatingFacets(context.getCurrentWriteProperties().isValidatingFacets())
+                  .build();
 
           result.setFeedData(dataProvider.getEmployeesData());
           result.setInlineProperties(inlineProperties);
         }
       } else if ("Buildings".equals(context.getSourceEntitySet().getName())) {
         EntityProviderWriteProperties inlineProperties =
-            EntityProviderWriteProperties.serviceRoot(baseUri).expandSelectTree(
-                context.getCurrentExpandSelectTreeNode()).selfLink(context.getSelfLink()).build();
+            EntityProviderWriteProperties.serviceRoot(baseUri)
+                .expandSelectTree(context.getCurrentExpandSelectTreeNode())
+                .validatingFacets(context.getCurrentWriteProperties().isValidatingFacets())
+                .selfLink(context.getSelfLink()).build();
         List<Map<String, Object>> emptyData = new ArrayList<Map<String, Object>>();
         result.setFeedData(emptyData);
         result.setInlineProperties(inlineProperties);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bdaec2fa/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/XmlExpandProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/XmlExpandProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/XmlExpandProducerTest.java
index c4ba63c..faab701 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/XmlExpandProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/XmlExpandProducerTest.java
@@ -22,6 +22,8 @@ import static org.custommonkey.xmlunit.XMLAssert.assertXpathExists;
 import static org.custommonkey.xmlunit.XMLAssert.assertXpathNotExists;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -33,9 +35,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.olingo.odata2.api.ODataCallback;
-import org.apache.olingo.odata2.api.edm.Edm;
-import org.apache.olingo.odata2.api.edm.EdmEntitySet;
-import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.*;
 import org.apache.olingo.odata2.api.ep.EntityProviderException;
 import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
 import org.apache.olingo.odata2.api.ep.callback.OnWriteEntryContent;
@@ -104,6 +104,59 @@ public class XmlExpandProducerTest extends AbstractProviderTest {
     verifyEmployees(employeeXPathString, xmlString);
   }
 
+  @Test(expected = EntityProviderException.class)
+  public void expandSelectedEmployeesWithFacets() throws Exception {
+    Edm edm = MockFacade.getMockEdm();
+    EdmTyped imageUrlProperty = edm.getEntityType("RefScenario", "Employee").getProperty("ImageUrl");
+    EdmFacets facets = mock(EdmFacets.class);
+    when(facets.getMaxLength()).thenReturn(1);
+    when(((EdmProperty) imageUrlProperty).getFacets()).thenReturn(facets);
+
+    ExpandSelectTreeNode selectTree = getSelectExpandTree("Rooms('1')", "nr_Employees", "nr_Employees");
+
+    HashMap<String, ODataCallback> callbacksRoom = createCallbacks("Rooms");
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).expandSelectTree(selectTree)
+            .callbacks(callbacksRoom)
+            .build();
+    AtomEntityProvider provider = createAtomEntityProvider();
+    ODataResponse response =
+        provider.writeEntry(edm.getDefaultEntityContainer().getEntitySet("Rooms"), roomData,
+            properties);
+
+    String xmlString = verifyResponse(response);
+    assertXpathNotExists("/a:entry/m:properties", xmlString);
+    assertXpathExists("/a:entry/a:link", xmlString);
+    verifyEmployees(employeeXPathString, xmlString);
+  }
+
+  @Test
+  public void expandSelectedEmployeesIgnoreFacets() throws Exception {
+    Edm edm = MockFacade.getMockEdm();
+    EdmTyped imageUrlProperty = edm.getEntityType("RefScenario", "Employee").getProperty("ImageUrl");
+    EdmFacets facets = mock(EdmFacets.class);
+    when(facets.getMaxLength()).thenReturn(1);
+    when(((EdmProperty) imageUrlProperty).getFacets()).thenReturn(facets);
+
+    ExpandSelectTreeNode selectTree = getSelectExpandTree("Rooms('1')", "nr_Employees", "nr_Employees");
+
+    HashMap<String, ODataCallback> callbacksRoom = createCallbacks("Rooms");
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).expandSelectTree(selectTree).callbacks(callbacksRoom)
+            .callbacks(callbacksRoom).validatingFacets(false)
+            .build();
+    AtomEntityProvider provider = createAtomEntityProvider();
+    ODataResponse response =
+        provider.writeEntry(edm.getDefaultEntityContainer().getEntitySet("Rooms"), roomData,
+            properties);
+
+    String xmlString = verifyResponse(response);
+    assertXpathNotExists("/a:entry/m:properties", xmlString);
+    assertXpathExists("/a:entry/a:link", xmlString);
+    verifyEmployees(employeeXPathString, xmlString);
+  }
+
+
   @Test
   public void expandSelectedEmployeesWithBuilder() throws Exception {
     EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");


[2/3] olingo-odata2 git commit: [OLINGO-822] Support skip facets in expand for JSON producer

Posted by mi...@apache.org.
[OLINGO-822] Support skip facets in expand for JSON producer


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/21dfed3b
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/21dfed3b
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/21dfed3b

Branch: refs/heads/master
Commit: 21dfed3b6b399e4629729e35cc300104b74cb153
Parents: bdaec2f
Author: mibo <mi...@mirb.de>
Authored: Sun Nov 22 14:27:03 2015 +0100
Committer: mibo <mi...@mirb.de>
Committed: Sun Nov 22 14:27:03 2015 +0100

----------------------------------------------------------------------
 .../ep/producer/JsonEntryEntityProducer.java    |   1 +
 .../producer/JsonEntryEntityProducerTest.java   | 122 +++++++++++++++++--
 2 files changed, 116 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/21dfed3b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
index 19736cf..df563b0 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
@@ -139,6 +139,7 @@ public class JsonEntryEntityProducer {
     context.setSourceEntitySet(entitySet);
     context.setNavigationProperty(navigationProperty);
     context.setEntryData(data);
+    context.setCurrentWriteProperties(properties);
     context.setCurrentExpandSelectTreeNode(properties.getExpandSelectTree().getLinks().get(
         navigationPropertyName));
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/21dfed3b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
index 67b65d2..2b86d06 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
@@ -30,13 +30,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TimeZone;
+import java.util.*;
 
 import org.apache.olingo.odata2.api.ODataCallback;
 import org.apache.olingo.odata2.api.edm.*;
@@ -585,6 +579,120 @@ public class JsonEntryEntityProducerTest extends BaseTest {
         json);
   }
 
+  @Test(expected=EntityProviderException.class)
+  public void entryWithExpandedEntryWithFacets() throws Exception {
+    Edm edm = MockFacade.getMockEdm();
+    EdmTyped imageUrlProperty = edm.getEntityType("RefScenario", "Employee").getProperty("ImageUrl");
+    EdmFacets facets = mock(EdmFacets.class);
+    when(facets.getMaxLength()).thenReturn(1);
+    when(((EdmProperty) imageUrlProperty).getFacets()).thenReturn(facets);
+
+    Map<String, Object> roomData = new HashMap<String, Object>();
+    roomData.put("Id", "1");
+    roomData.put("Name", "Neu Schwanstein");
+    roomData.put("Seats", new Integer(20));
+    roomData.put("Version", new Integer(3));
+
+    ExpandSelectTreeNode node2 = Mockito.mock(ExpandSelectTreeNode.class);
+    Map<String, ExpandSelectTreeNode> links = new HashMap<String, ExpandSelectTreeNode>();
+    links.put("nr_Employees", node2);
+    ExpandSelectTreeNode node1 = Mockito.mock(ExpandSelectTreeNode.class);
+    Mockito.when(node1.getLinks()).thenReturn(links);
+
+    class EntryCallback implements OnWriteFeedContent {
+      @Override
+      public WriteFeedCallbackResult retrieveFeedResult(final WriteFeedCallbackContext context)
+          throws ODataApplicationException {
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("EmployeeId", "1");
+        data.put("ImageUrl", "hhtp://url");
+        WriteFeedCallbackResult result = new WriteFeedCallbackResult();
+        result.setFeedData(Collections.singletonList(data));
+        result.setInlineProperties(DEFAULT_PROPERTIES);
+        return result;
+      }
+    }
+
+    EntryCallback callback = new EntryCallback();
+    Map<String, ODataCallback> callbacks = new HashMap<String, ODataCallback>();
+    callbacks.put("nr_Employees", callback);
+
+    EdmEntitySet entitySet = edm.getDefaultEntityContainer().getEntitySet("Rooms");
+    final ODataResponse response =
+        new JsonEntityProvider().writeEntry(entitySet, roomData,
+            EntityProviderWriteProperties.serviceRoot(URI.create(BASE_URI)).expandSelectTree(node1)
+                .callbacks(callbacks).build());
+    assertNotNull(response);
+  }
+
+  @Test
+  public void entryWithExpandedEntryIgnoreFacets() throws Exception {
+    Edm edm = MockFacade.getMockEdm();
+    EdmTyped imageUrlProperty = edm.getEntityType("RefScenario", "Employee").getProperty("ImageUrl");
+    EdmFacets facets = mock(EdmFacets.class);
+    when(facets.getMaxLength()).thenReturn(1);
+    when(((EdmProperty) imageUrlProperty).getFacets()).thenReturn(facets);
+
+    Map<String, Object> roomData = new HashMap<String, Object>();
+    roomData.put("Id", "1");
+    roomData.put("Name", "Neu Schwanstein");
+    roomData.put("Seats", new Integer(20));
+    roomData.put("Version", new Integer(3));
+
+    ExpandSelectTreeNode node2 = Mockito.mock(ExpandSelectTreeNode.class);
+    Map<String, ExpandSelectTreeNode> links = new HashMap<String, ExpandSelectTreeNode>();
+    links.put("nr_Employees", node2);
+    ExpandSelectTreeNode node1 = Mockito.mock(ExpandSelectTreeNode.class);
+    Mockito.when(node1.getLinks()).thenReturn(links);
+
+    class EntryCallback implements OnWriteFeedContent {
+      @Override
+      public WriteFeedCallbackResult retrieveFeedResult(final WriteFeedCallbackContext context)
+          throws ODataApplicationException {
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("EmployeeId", "1");
+        data.put("ImageUrl", "hhtp://url");
+        WriteFeedCallbackResult result = new WriteFeedCallbackResult();
+        result.setFeedData(Collections.singletonList(data));
+        result.setInlineProperties(DEFAULT_PROPERTIES);
+        EntityProviderWriteProperties properties =
+            EntityProviderWriteProperties.serviceRoot(URI.create(BASE_URI))
+                .validatingFacets(context.getCurrentWriteProperties().isValidatingFacets()).build();
+        result.setInlineProperties(properties);
+        return result;
+      }
+    }
+
+    EntryCallback callback = new EntryCallback();
+    Map<String, ODataCallback> callbacks = new HashMap<String, ODataCallback>();
+    callbacks.put("nr_Employees", callback);
+
+
+    EdmEntitySet entitySet = edm.getDefaultEntityContainer().getEntitySet("Rooms");
+    final ODataResponse response =
+        new JsonEntityProvider().writeEntry(entitySet, roomData,
+            EntityProviderWriteProperties.serviceRoot(URI.create(BASE_URI)).expandSelectTree(node1)
+                .validatingFacets(false)
+                .callbacks(callbacks).build());
+    final String json = verifyResponse(response);
+    assertEquals("{\"d\":{\"__metadata\":{\"id\":\"http://host:80/service/Rooms('1')\"," +
+        "\"uri\":\"http://host:80/service/Rooms('1')\",\"type\":\"RefScenario.Room\",\"etag\":\"W/\\\"3\\\"\"}," +
+        "\"nr_Employees\":{\"results\":[{\"__metadata\":{\"id\":\"http://host:80/service/Employees('1')\"," +
+        "\"uri\":\"http://host:80/service/Employees('1')\",\"type\":\"RefScenario.Employee\"," +
+        "\"content_type\":\"application/octet-stream\"," +
+        "\"media_src\":\"http://host:80/service/Employees('1')/$value\"," +
+        "\"edit_media\":\"http://host:80/service/Employees('1')/$value\"},\"EmployeeId\":\"1\",\"EmployeeName\":null," +
+        "\"ManagerId\":null,\"RoomId\":null,\"TeamId\":null," +
+        "\"Location\":{\"__metadata\":{\"type\":\"RefScenario.c_Location\"}," +
+        "\"City\":{\"__metadata\":{\"type\":\"RefScenario.c_City\"}," +
+        "\"PostalCode\":null,\"CityName\":null},\"Country\":null}," +
+        "\"Age\":null,\"EntryDate\":null,\"ImageUrl\":\"hhtp://url\"," +
+        "\"ne_Manager\":{\"__deferred\":{\"uri\":\"http://host:80/service/Employees('1')/ne_Manager\"}}," +
+        "\"ne_Team\":{\"__deferred\":{\"uri\":\"http://host:80/service/Employees('1')/ne_Team\"}}," +
+        "\"ne_Room\":{\"__deferred\":{\"uri\":\"http://host:80/service/Employees('1')/ne_Room\"}}}]}}}",
+        json);
+  }
+
   @Test
   public void entryWithExpandedEntryButNoRegisteredCallback() throws Exception {
     final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");


[3/3] olingo-odata2 git commit: [OLINGO-822] Merge branch 'OLINGO-822_WritePropertiesForExpandContext'

Posted by mi...@apache.org.
[OLINGO-822] Merge branch 'OLINGO-822_WritePropertiesForExpandContext'


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/843fba14
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/843fba14
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/843fba14

Branch: refs/heads/master
Commit: 843fba1449b367d5eef6fa69f4606bbd7232a9d9
Parents: 352a82c 21dfed3
Author: mibo <mi...@mirb.de>
Authored: Sun Nov 22 18:40:04 2015 +0100
Committer: mibo <mi...@mirb.de>
Committed: Sun Nov 22 18:40:04 2015 +0100

----------------------------------------------------------------------
 .../api/ep/callback/WriteCallbackContext.java   |  21 ++++
 .../ep/producer/AtomEntryEntityProducer.java    |  12 +-
 .../ep/producer/JsonEntryEntityProducer.java    |   1 +
 .../producer/JsonEntryEntityProducerTest.java   | 122 +++++++++++++++++--
 .../odata2/core/ep/producer/MyCallback.java     |  13 +-
 .../core/ep/producer/XmlExpandProducerTest.java |  59 ++++++++-
 6 files changed, 208 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/843fba14/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
----------------------------------------------------------------------
diff --cc odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
index c06f9b5,2b86d06..519ba0d
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
@@@ -30,23 -30,10 +30,17 @@@ import java.io.IOException
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.net.URI;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Calendar;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.TimeZone;
+ import java.util.*;
  
  import org.apache.olingo.odata2.api.ODataCallback;
 -import org.apache.olingo.odata2.api.edm.*;
 +import org.apache.olingo.odata2.api.edm.Edm;
 +import org.apache.olingo.odata2.api.edm.EdmEntitySet;
 +import org.apache.olingo.odata2.api.edm.EdmEntityType;
 +import org.apache.olingo.odata2.api.edm.EdmFacets;
 +import org.apache.olingo.odata2.api.edm.EdmMapping;
 +import org.apache.olingo.odata2.api.edm.EdmProperty;
 +import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
 +import org.apache.olingo.odata2.api.edm.EdmTyped;
  import org.apache.olingo.odata2.api.ep.EntityProviderException;
  import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
  import org.apache.olingo.odata2.api.ep.callback.OnWriteEntryContent;