[OLINGO-275] Fix for xml and verified for json

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

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 340d7c030d8818f065246b6511a4200adc196e43
Parents: 3887f7b
Author: Christian Amend <[email protected]>
Authored: Thu May 8 15:41:09 2014 +0200
Committer: Christian Amend <[email protected]>
Committed: Thu May 8 15:41:09 2014 +0200

----------------------------------------------------------------------
 .../core/ep/consumer/XmlEntityConsumer.java     |  2 +-
 .../core/ep/consumer/XmlEntryConsumer.java      | 20 ++++---
 .../core/ep/consumer/XmlFeedConsumer.java       |  2 +-
 .../core/ep/consumer/JsonEntryConsumerTest.java | 27 +++++++++
 .../consumer/JsonEntryDeepInsertEntryTest.java  |  2 +
 .../core/ep/consumer/JsonFeedConsumerTest.java  |  2 +
 .../core/ep/consumer/XmlEntityConsumerTest.java | 15 ++++-
 .../core/ep/consumer/XmlFeedConsumerTest.java   | 27 +++++++++
 .../odata-core/src/test/resources/JsonRoom.json | 24 ++++++++
 .../src/test/resources/feed_rooms_small.xml     | 62 ++++++++++++++++++++
 10 files changed, 170 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/340d7c03/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumer.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumer.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumer.java
index 5d73862..acbc77f 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumer.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumer.java
@@ -87,7 +87,7 @@ public class XmlEntityConsumer {
       reader = XmlHelper.createStreamReader(content);
       EntityInfoAggregator eia = EntityInfoAggregator.create(entitySet);
 
-      return new XmlEntryConsumer().readEntry(reader, eia, properties);
+      return new XmlEntryConsumer().readEntry(reader, eia, properties, false);
     } catch (EntityProviderException e) {
       cachedException = e;
       throw cachedException;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/340d7c03/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java
index a6111d1..4bc9173 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java
@@ -75,10 +75,14 @@ public class XmlEntryConsumer {
   private String currentHandledStartTagName;
 
   public ODataEntry readEntry(final XMLStreamReader reader, final 
EntityInfoAggregator eia,
-      final EntityProviderReadProperties readProperties) throws 
EntityProviderException {
+      final EntityProviderReadProperties readProperties, final boolean 
isInline) throws EntityProviderException {
     try {
       initialize(readProperties);
 
+      if (isInline) {
+        setETag(reader);
+      }
+
       while (reader.hasNext() && !isEntryEndTag(reader)) {
         reader.nextTag();
         if (reader.isStartElement()) {
@@ -206,7 +210,10 @@ public class XmlEntryConsumer {
 
   private void readEntry(final XMLStreamReader reader) throws 
EntityProviderException, XMLStreamException {
     reader.require(XMLStreamConstants.START_ELEMENT, Edm.NAMESPACE_ATOM_2005, 
FormatXml.ATOM_ENTRY);
+    setETag(reader);
+  }
 
+  private void setETag(final XMLStreamReader reader) {
     final String etag = reader.getAttributeValue(Edm.NAMESPACE_M_2007_08, 
FormatXml.M_ETAG);
     entryMetadata.setEtag(etag);
   }
@@ -278,7 +285,7 @@ public class XmlEntryConsumer {
     final EntityProviderReadProperties inlineProperties = 
createInlineProperties(readProperties, navigationProperty);
 
     // validations
-    boolean isFeed = isInlineFeedValidated(reader, eia, atomLinkType, 
navigationPropertyName);
+    boolean isFeed = isInlineFeedValidated(reader, eia, atomLinkType, 
navigationProperty);
 
     List<ODataEntry> inlineEntries = new ArrayList<ODataEntry>();
 
@@ -288,7 +295,7 @@ public class XmlEntryConsumer {
       if (reader.isStartElement() && 
Edm.NAMESPACE_ATOM_2005.equals(reader.getNamespaceURI())
           && FormatXml.ATOM_ENTRY.equals(reader.getLocalName())) {
         XmlEntryConsumer xec = new XmlEntryConsumer();
-        ODataEntry inlineEntry = xec.readEntry(reader, inlineEia, 
inlineProperties);
+        ODataEntry inlineEntry = xec.readEntry(reader, inlineEia, 
inlineProperties, true);
         inlineEntries.add(inlineEntry);
       }
       // next tag
@@ -462,13 +469,13 @@ public class XmlEntryConsumer {
    * @param reader xml content reader which already points to <code><m:inline> 
tag</code>
    * @param eia all necessary information about the entity
    * @param type the atom type attribute value of the <code>link</code> tag
-   * @param navigationPropertyName the navigation property name of the entity
+   * @param navigationProperty the navigation property name of the entity
    * @return <code>true</code> for <code>Feed</code> and <code>false</code> 
for <code>Entry</code>
    * @throws EntityProviderException is thrown if at least one validation 
fails.
    * @throws EdmException if edm access fails
    */
   private boolean isInlineFeedValidated(final XMLStreamReader reader, final 
EntityInfoAggregator eia,
-      final String type, final String navigationPropertyName) throws 
EntityProviderException, EdmException {
+      final String type, final EdmNavigationProperty navigationProperty) 
throws EntityProviderException, EdmException {
     boolean isFeed = false;
     try {
       reader.require(XMLStreamConstants.START_ELEMENT, 
Edm.NAMESPACE_M_2007_08, FormatXml.M_INLINE);
@@ -477,9 +484,6 @@ public class XmlEntryConsumer {
       if (cType == null) {
         throw new 
EntityProviderException(EntityProviderException.INVALID_INLINE_CONTENT.addContent("xml
 data"));
       }
-
-      EdmNavigationProperty navigationProperty =
-          (EdmNavigationProperty) 
eia.getEntityType().getProperty(navigationPropertyName);
       EdmMultiplicity navigationMultiplicity = 
navigationProperty.getMultiplicity();
 
       switch (navigationMultiplicity) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/340d7c03/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumer.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumer.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumer.java
index 2ffec2e..9b427d5 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumer.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumer.java
@@ -106,7 +106,7 @@ public class XmlFeedConsumer {
 
     while (reader.hasNext() && !isFeedEndTag(reader)) {
       if (FormatXml.ATOM_ENTRY.equals(reader.getLocalName())) {
-        ODataEntry entry = xec.readEntry(reader, eia, entryReadProperties);
+        ODataEntry entry = xec.readEntry(reader, eia, entryReadProperties, 
true);
         results.add(entry);
       } else if 
(FormatXml.ATOM_TOMBSTONE_DELETED_ENTRY.equals(reader.getLocalName())) {
         reader.require(XMLStreamConstants.START_ELEMENT, 
FormatXml.ATOM_TOMBSTONE_NAMESPACE,

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/340d7c03/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumerTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumerTest.java
 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumerTest.java
index 0d4a2f4..30539fb 100644
--- 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumerTest.java
+++ 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumerTest.java
@@ -33,6 +33,7 @@ import java.util.TimeZone;
 import org.apache.olingo.odata2.api.edm.EdmEntitySet;
 import org.apache.olingo.odata2.api.ep.EntityProviderException;
 import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
+import org.apache.olingo.odata2.api.ep.entry.EntryMetadata;
 import org.apache.olingo.odata2.api.ep.entry.MediaMetadata;
 import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
 import org.apache.olingo.odata2.testutil.mock.MockFacade;
@@ -44,6 +45,7 @@ import org.junit.Test;
 public class JsonEntryConsumerTest extends AbstractConsumerTest {
 
   private static final String SIMPLE_ENTRY_BUILDING = "JsonBuilding.json";
+  private static final String SIMPLE_ENTRY_ROOM = "JsonRoom.json";
   private static final String SIMPLE_ENTRY_EMPLOYEE = "JsonEmployee.json";
   private static final String SIMPLE_ENTRY_TEAM = "JsonTeam.json";
   private static final String INVALID_ENTRY_TEAM_DOUBLE_NAME_PROPERTY = 
"JsonInvalidTeamDoubleNameProperty.json";
@@ -63,6 +65,31 @@ public class JsonEntryConsumerTest extends 
AbstractConsumerTest {
     JsonEntityConsumer xec = new JsonEntityConsumer();
     xec.readEntry(entitySet, contentBody, DEFAULT_PROPERTIES);
   }
+  
+  @Test
+  public void readSimpleRoomEntry() throws Exception {
+    ODataEntry roomEntry = prepareAndExecuteEntry(SIMPLE_ENTRY_ROOM, "Rooms", 
DEFAULT_PROPERTIES);
+
+    // verify
+    Map<String, Object> properties = roomEntry.getProperties();
+    assertEquals(4, properties.size());
+
+    assertEquals("1", properties.get("Id"));
+    assertEquals("Room 1", properties.get("Name"));
+    assertEquals((short) 1, properties.get("Seats"));
+    assertEquals((short) 1, properties.get("Version"));
+
+    List<String> associationUris = 
roomEntry.getMetadata().getAssociationUris("nr_Employees");
+    assertEquals(1, associationUris.size());
+    
assertEquals("http://localhost:8080/ReferenceScenario.svc/Rooms('1')/nr_Employees",
 associationUris.get(0));
+
+    associationUris = 
roomEntry.getMetadata().getAssociationUris("nr_Building");
+    assertEquals(1, associationUris.size());
+    
assertEquals("http://localhost:8080/ReferenceScenario.svc/Rooms('1')/nr_Building",
 associationUris.get(0));
+
+    EntryMetadata metadata = roomEntry.getMetadata();
+    assertEquals("W/\"1\"",metadata.getEtag());
+  }
 
   @SuppressWarnings("unchecked")
   @Test

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/340d7c03/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
index 1a057af..d35bbe4 100644
--- 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
+++ 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
@@ -161,6 +161,8 @@ public class JsonEntryDeepInsertEntryTest extends 
AbstractConsumerTest {
 
     associationUris = 
innerRoom.getMetadata().getAssociationUris("nr_Building");
     assertEquals(Collections.emptyList(), associationUris);
+    
+    assertEquals("W/\"1\"", innerRoom.getMetadata().getEtag());
 
     ODataEntry innerBuilding = (ODataEntry) 
innerRoomProperties.get("nr_Building");
     assertNotNull(innerBuilding);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/340d7c03/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonFeedConsumerTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonFeedConsumerTest.java
 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonFeedConsumerTest.java
index 3d9201c..6495b73 100644
--- 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonFeedConsumerTest.java
+++ 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonFeedConsumerTest.java
@@ -507,6 +507,8 @@ public class JsonFeedConsumerTest extends 
AbstractConsumerTest {
     assertNotNull(feedMetadata);
     
assertEquals("http://localhost:8080/ReferenceScenario.svc/Rooms?!deltatoken=4711";,
 feedMetadata.getDeltaLink());
 
+    assertEquals("W/\"2\"", entries.get(0).getMetadata().getEtag());
+
     List<DeletedEntryMetadata> deletedEntries = feed.getDeletedEntries();
     assertEquals(2, deletedEntries.size());
     for (DeletedEntryMetadata deletedEntry : deletedEntries) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/340d7c03/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
index 59df942..45e9861 100644
--- 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
+++ 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
@@ -804,14 +804,20 @@ public class XmlEntityConsumerTest extends 
AbstractXmlConsumerTest {
 
     // execute
     XmlEntityConsumer xec = new XmlEntityConsumer();
-    ODataEntry entry =
+    ODataEntry employee =
         xec.readEntry(entitySet, reqContent, 
EntityProviderReadProperties.init().mergeSemantic(true).build());
 
     // validate
-    assertNotNull(entry);
-    Map<String, Object> properties = entry.getProperties();
+    assertNotNull(employee);
+    Map<String, Object> properties = employee.getProperties();
     assertEquals("1", properties.get("EmployeeId"));
     assertEquals("Walter Winter", properties.get("EmployeeName"));
+    EntryMetadata employeeMetadata = employee.getMetadata();
+    assertNotNull(employeeMetadata);
+    assertEquals("W/\"1\"", employeeMetadata.getEtag());
+    
+    
+    //Inline
     ODataEntry room = (ODataEntry) properties.get("ne_Room");
     Map<String, Object> roomProperties = room.getProperties();
     assertEquals(4, roomProperties.size());
@@ -819,6 +825,9 @@ public class XmlEntityConsumerTest extends 
AbstractXmlConsumerTest {
     assertEquals("Room 1", roomProperties.get("Name"));
     assertEquals(Short.valueOf("1"), roomProperties.get("Seats"));
     assertEquals(Short.valueOf("1"), roomProperties.get("Version"));
+    EntryMetadata roomMetadata = room.getMetadata();
+    assertNotNull(roomMetadata);
+    assertEquals("W/1", roomMetadata.getEtag());
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/340d7c03/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumerTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumerTest.java
 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumerTest.java
index 9301258..dace8eb 100644
--- 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumerTest.java
+++ 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumerTest.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 import java.io.InputStream;
+import java.util.List;
 
 import junit.framework.Assert;
 
@@ -29,6 +30,8 @@ import org.apache.olingo.odata2.api.edm.EdmEntitySet;
 import org.apache.olingo.odata2.api.ep.EntityProvider;
 import org.apache.olingo.odata2.api.ep.EntityProviderException;
 import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
+import org.apache.olingo.odata2.api.ep.entry.EntryMetadata;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
 import org.apache.olingo.odata2.api.ep.feed.FeedMetadata;
 import org.apache.olingo.odata2.api.ep.feed.ODataDeltaFeed;
 import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
@@ -40,6 +43,30 @@ public class XmlFeedConsumerTest extends 
AbstractXmlConsumerTest {
   public XmlFeedConsumerTest(final StreamWriterImplType type) {
     super(type);
   }
+  
+  @Test
+  public void roomsFeedWithEtagEntries() throws Exception {
+    InputStream stream = getFileAsStream("feed_rooms_small.xml");
+    assertNotNull(stream);
+
+    ODataFeed feed =
+        EntityProvider.readFeed("application/atom+xml", 
MockFacade.getMockEdm().getDefaultEntityContainer()
+            .getEntitySet(
+                "Rooms"), stream, DEFAULT_PROPERTIES);
+    assertNotNull(feed);
+
+    FeedMetadata feedMetadata = feed.getFeedMetadata();
+    assertNotNull(feedMetadata);
+    assertNotNull(feedMetadata.getNextLink());
+    
+    List<ODataEntry> entries = feed.getEntries();
+    assertEquals(3, entries.size());
+    ODataEntry singleRoom = entries.get(0);
+    EntryMetadata roomMetadata = singleRoom.getMetadata();
+    assertNotNull(roomMetadata);
+    
+    assertEquals("W/\"1\"", roomMetadata.getEtag());
+  }
 
   @Test
   public void readLargeEmployeesFeed() throws Exception {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/340d7c03/odata2-lib/odata-core/src/test/resources/JsonRoom.json
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/JsonRoom.json 
b/odata2-lib/odata-core/src/test/resources/JsonRoom.json
new file mode 100644
index 0000000..806aef2
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/JsonRoom.json
@@ -0,0 +1,24 @@
+{
+       "d" : {
+               "__metadata" : {
+                       "id" : 
"http://localhost:8080/ReferenceScenario.svc/Rooms('1')",
+                       "uri" : 
"http://localhost:8080/ReferenceScenario.svc/Rooms('1')",
+                       "type" : "RefScenario.Room",
+                       "etag" : "W/\"1\""
+               },
+               "Id" : "1",
+               "Name" : "Room 1",
+               "Seats" : 1,
+               "Version" : 1,
+               "nr_Employees" : {
+                       "__deferred" : {
+                               "uri" : 
"http://localhost:8080/ReferenceScenario.svc/Rooms('1')/nr_Employees"
+                       }
+               },
+               "nr_Building" : {
+                       "__deferred" : {
+                               "uri" : 
"http://localhost:8080/ReferenceScenario.svc/Rooms('1')/nr_Building"
+                       }
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/340d7c03/odata2-lib/odata-core/src/test/resources/feed_rooms_small.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/feed_rooms_small.xml 
b/odata2-lib/odata-core/src/test/resources/feed_rooms_small.xml
new file mode 100644
index 0000000..6b8c09b
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/feed_rooms_small.xml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='utf-8'?>
+<feed xmlns="http://www.w3.org/2005/Atom"; 
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"; 
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"; 
xml:base="http://localhost:8080/ReferenceScenario.svc/";>
+       <id>http://localhost:8080/ReferenceScenario.svc/Rooms</id>
+       <title type="text">Rooms</title>
+       <updated>2014-05-08T13:06:23Z</updated>
+       <author>
+               <name/>
+       </author>
+       <link href="Rooms" rel="self" title="Rooms"/>
+       <entry m:etag="W/&quot;1&quot;">
+               <id>http://localhost:8080/ReferenceScenario.svc/Rooms('1')</id>
+               <title type="text">Room 1</title>
+               <updated>2014-05-08T13:06:23Z</updated>
+               <category term="RefScenario.Room" 
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+               <link href="Rooms('1')" rel="edit" title="Room"/>
+               <link href="Rooms('1')/nr_Employees" 
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Employees";
 title="nr_Employees" type="application/atom+xml;type=feed"/>
+               <link href="Rooms('1')/nr_Building" 
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Building"; 
title="nr_Building" type="application/atom+xml;type=entry"/>
+               <content type="application/xml">
+                       <m:properties>
+                               <d:Id>1</d:Id>
+                               <d:Name>Room 1</d:Name>
+                               <d:Seats>1</d:Seats>
+                               <d:Version>1</d:Version>
+                       </m:properties>
+               </content>
+       </entry>
+       <entry m:etag="W/&quot;1&quot;">
+               <id>http://localhost:8080/ReferenceScenario.svc/Rooms('10')</id>
+               <title type="text">Room 10</title>
+               <updated>2014-05-08T13:06:23Z</updated>
+               <category term="RefScenario.Room" 
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+               <link href="Rooms('10')" rel="edit" title="Room"/>
+               <link href="Rooms('10')/nr_Employees" 
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Employees";
 title="nr_Employees" type="application/atom+xml;type=feed"/>
+               <link href="Rooms('10')/nr_Building" 
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Building"; 
title="nr_Building" type="application/atom+xml;type=entry"/>
+               <content type="application/xml">
+                       <m:properties>
+                               <d:Id>10</d:Id>
+                               <d:Name>Room 10</d:Name>
+                               <d:Seats>6</d:Seats>
+                               <d:Version>1</d:Version>
+                       </m:properties>
+               </content>
+       </entry>
+       <entry m:etag="W/&quot;1&quot;">
+               
<id>http://localhost:8080/ReferenceScenario.svc/Rooms('100')</id>
+               <title type="text">Room 100</title>
+               <updated>2014-05-08T13:06:23Z</updated>
+               <category term="RefScenario.Room" 
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+               <link href="Rooms('100')" rel="edit" title="Room"/>
+               <link href="Rooms('100')/nr_Employees" 
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Employees";
 title="nr_Employees" type="application/atom+xml;type=feed"/>
+               <link href="Rooms('100')/nr_Building" 
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Building"; 
title="nr_Building" type="application/atom+xml;type=entry"/>
+               <content type="application/xml">
+                       <m:properties>
+                               <d:Id>100</d:Id>
+                               <d:Name>Room 100</d:Name>
+                               <d:Seats>6</d:Seats>
+                               <d:Version>1</d:Version>
+                       </m:properties>
+               </content>
+       </entry>
+       <link 
href="http://localhost:8080/ReferenceScenario.svc/Rooms?$skiptoken=97"; 
rel="next"/>
+</feed>
\ No newline at end of file

Reply via email to