You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by fm...@apache.org on 2014/04/29 10:33:37 UTC

[2/2] git commit: merge

merge


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

Branch: refs/heads/master
Commit: 639941c00eca9742a28e9297329cf909bd34f91c
Parents: f79db0b e8ac1c7
Author: fmartelli <fa...@gmail.com>
Authored: Tue Apr 29 10:27:30 2014 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Tue Apr 29 10:27:30 2014 +0200

----------------------------------------------------------------------
 .../org/apache/olingo/fit/AbstractServices.java | 113 +++++-----
 .../apache/olingo/fit/V3ActionOverloading.java  |   4 +-
 .../java/org/apache/olingo/fit/V3Services.java  |   6 +-
 .../java/org/apache/olingo/fit/V4Services.java  | 126 +++++++----
 .../apache/olingo/fit/metadata/Metadata.java    |   2 +-
 .../olingo/fit/metadata/NavigationProperty.java |  10 +-
 .../fit/serializer/JSONEntryContainer.java      |  14 +-
 .../fit/serializer/JSONFeedContainer.java       |  14 +-
 .../olingo/fit/utils/AbstractUtilities.java     |  64 +++---
 .../org/apache/olingo/fit/utils/DataBinder.java | 153 +++++++------
 .../org/apache/olingo/fit/utils/FSManager.java  |   6 +-
 .../apache/olingo/fit/utils/XMLUtilities.java   |   2 +-
 fit/src/main/resources/V40/delta.full.json      |  39 ++++
 fit/src/main/resources/V40/delta.xml            |  87 ++++++++
 .../client/api/CommonEdmEnabledODataClient.java |   1 -
 .../request/retrieve/ODataEntityRequest.java    |   2 +-
 .../request/retrieve/v4/ODataDeltaRequest.java  |  29 +++
 .../retrieve/v4/RetrieveRequestFactory.java     |   2 +
 .../request/v4/AsyncRequestFactory.java         |   1 -
 .../api/domain/ODataEntitySetIterator.java      |  77 +++----
 .../olingo/client/api/op/CommonODataBinder.java |  32 +--
 .../olingo/client/api/op/CommonODataReader.java |   6 +-
 .../olingo/client/api/op/v3/ODataBinder.java    |   8 +-
 .../olingo/client/api/op/v4/ODataBinder.java    |  12 +-
 .../client/api/op/v4/ODataDeserializer.java     |  11 +
 .../cud/ODataEntityCreateRequestImpl.java       |   6 +-
 .../cud/ODataEntityUpdateRequestImpl.java       |   6 +-
 .../retrieve/ODataEntityRequestImpl.java        |   6 +-
 .../ODataEntitySetIteratorRequestImpl.java      |  10 +-
 .../retrieve/ODataEntitySetRequestImpl.java     |   6 +-
 .../retrieve/ODataPropertyRequestImpl.java      |   8 +-
 .../retrieve/v4/ODataDeltaRequestImpl.java      |  81 +++++++
 .../retrieve/v4/RetrieveRequestFactoryImpl.java |   6 +
 .../ODataMediaEntityCreateRequestImpl.java      |   4 +-
 .../ODataMediaEntityUpdateRequestImpl.java      |   4 +-
 .../request/v4/AsyncRequestFactoryImpl.java     |   3 +-
 .../client/core/op/AbstractODataBinder.java     | 132 +++++------
 .../client/core/op/AbstractODataReader.java     |   9 +-
 .../olingo/client/core/op/ODataWriterImpl.java  |   6 +-
 .../client/core/op/impl/v3/ODataBinderImpl.java |  10 +-
 .../client/core/op/impl/v3/ODataReaderImpl.java |   4 +-
 .../client/core/op/impl/v4/ODataBinderImpl.java |  79 ++++++-
 .../core/op/impl/v4/ODataDeserializerImpl.java  |  12 +
 .../client/core/op/impl/v4/ODataReaderImpl.java |   4 +-
 .../client/core/it/AbstractBaseTestITCase.java  |  20 +-
 .../core/it/v3/EntityRetrieveTestITCase.java    |   6 +-
 .../client/core/it/v3/EntitySetTestITCase.java  |   2 +-
 .../core/it/v3/QueryOptionsTestITCase.java      |  10 +-
 .../client/core/it/v4/DeltaTestITCase.java      |  78 +++++++
 .../apache/olingo/client/core/v3/AtomTest.java  |  30 +--
 .../olingo/client/core/v3/EntitySetTest.java    |  10 +-
 .../olingo/client/core/v3/EntityTest.java       |  32 +--
 .../apache/olingo/client/core/v4/AtomTest.java  |   2 +-
 .../olingo/client/core/v4/EntitySetTest.java    |  18 +-
 .../olingo/client/core/v4/EntityTest.java       |  51 +++--
 .../apache/olingo/client/core/v4/JSONTest.java  |  97 ++++++---
 .../apache/olingo/client/core/v4/Customers.json |   2 +-
 .../org/apache/olingo/client/core/v4/delta.json |  39 ++++
 .../org/apache/olingo/client/core/v4/delta.xml  |  87 ++++++++
 .../apache/olingo/commons/api/Constants.java    |  22 +-
 .../olingo/commons/api/data/ContextURL.java     |  52 ++++-
 .../olingo/commons/api/data/DeletedEntity.java  |  36 +++
 .../apache/olingo/commons/api/data/Delta.java   |  45 ++++
 .../olingo/commons/api/data/DeltaLink.java      |  36 +++
 .../apache/olingo/commons/api/data/Entity.java  | 174 +++++++++++++++
 .../olingo/commons/api/data/EntitySet.java      |  74 +++++++
 .../apache/olingo/commons/api/data/Entry.java   | 174 ---------------
 .../apache/olingo/commons/api/data/Feed.java    |  74 -------
 .../apache/olingo/commons/api/data/Link.java    |  24 +-
 .../api/domain/CommonODataEntitySet.java        |   2 +-
 .../olingo/commons/api/domain/ODataLinked.java  |   2 +-
 .../commons/api/domain/v4/ODataDelta.java       |  48 ++++
 .../api/domain/v4/ODataObjectFactory.java       |   4 +
 .../api/edm/constants/ODataServiceVersion.java  |  12 +
 .../commons/api/op/CommonODataDeserializer.java |  18 +-
 .../olingo/commons/api/op/ODataSerializer.java  |  20 +-
 .../olingo/commons/api/data/ContextURLTest.java |  33 +++
 .../commons/core/data/AbstractAtomDealer.java   |  20 +-
 .../olingo/commons/core/data/AbstractDelta.java |  65 ++++++
 .../commons/core/data/AbstractEntity.java       | 171 +++++++++++++++
 .../commons/core/data/AbstractEntitySet.java    |  61 ++++++
 .../olingo/commons/core/data/AbstractEntry.java | 171 ---------------
 .../core/data/AbstractJsonDeserializer.java     |  20 +-
 .../core/data/AbstractJsonSerializer.java       |  18 +-
 .../olingo/commons/core/data/AtomDeltaImpl.java |  25 +++
 .../commons/core/data/AtomDeserializer.java     | 218 ++++++++++++++-----
 .../commons/core/data/AtomEntityImpl.java       |  25 +++
 .../commons/core/data/AtomEntitySetImpl.java    |  28 +++
 .../olingo/commons/core/data/AtomEntryImpl.java |  25 ---
 .../olingo/commons/core/data/AtomFeedImpl.java  |  66 ------
 .../commons/core/data/AtomSerializer.java       | 154 ++++++-------
 .../commons/core/data/DeletedEntityImpl.java    |  50 +++++
 .../olingo/commons/core/data/DeltaLinkImpl.java |  64 ++++++
 .../core/data/JSONDeltaDeserializer.java        |  93 ++++++++
 .../olingo/commons/core/data/JSONDeltaImpl.java |  28 +++
 .../core/data/JSONEntityDeserializer.java       | 200 +++++++++++++++++
 .../commons/core/data/JSONEntityImpl.java       |  33 +++
 .../commons/core/data/JSONEntitySerializer.java | 123 +++++++++++
 .../core/data/JSONEntitySetDeserializer.java    |  93 ++++++++
 .../commons/core/data/JSONEntitySetImpl.java    |  35 +++
 .../core/data/JSONEntitySetSerializer.java      |  82 +++++++
 .../core/data/JSONEntryDeserializer.java        | 200 -----------------
 .../olingo/commons/core/data/JSONEntryImpl.java |  33 ---
 .../commons/core/data/JSONEntrySerializer.java  | 123 -----------
 .../commons/core/data/JSONFeedDeserializer.java |  90 --------
 .../olingo/commons/core/data/JSONFeedImpl.java  |  99 ---------
 .../commons/core/data/JSONFeedSerializer.java   |  82 -------
 .../olingo/commons/core/data/LinkImpl.java      |  24 +-
 .../core/data/ODataJacksonDeserializer.java     |   9 +
 .../core/data/v3/JSONLinkCollectionImpl.java    |   2 +-
 .../core/domain/AbstractODataEntity.java        |   2 +-
 .../core/domain/AbstractODataEntitySet.java     |   5 +-
 .../core/domain/v4/ODataComplexValueImpl.java   |   2 +-
 .../commons/core/domain/v4/ODataDeltaImpl.java  |  73 +++++++
 .../core/domain/v4/ODataObjectFactoryImpl.java  |  11 +
 .../core/edm/AbstractEdmNavigationProperty.java |   1 -
 .../core/op/AbstractODataDeserializer.java      |  24 +-
 .../core/op/AbstractODataSerializer.java        |  36 +--
 .../olingo/commons/core/op/ResourceFactory.java |  84 +++----
 119 files changed, 3343 insertions(+), 1976 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/639941c0/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
----------------------------------------------------------------------
diff --cc fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
index 021de16,202d118..5ce5790
--- a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
+++ b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
@@@ -67,12 -67,11 +67,12 @@@ import org.apache.cxf.jaxrs.client.WebC
  import org.apache.cxf.jaxrs.ext.multipart.Attachment;
  import org.apache.cxf.jaxrs.ext.multipart.Multipart;
  import org.apache.cxf.jaxrs.ext.multipart.MultipartBody;
 +import org.apache.olingo.commons.api.data.ComplexValue;
  import org.apache.olingo.commons.api.data.ResWrap;
- import org.apache.olingo.commons.api.data.Entry;
+ import org.apache.olingo.commons.api.data.Entity;
  import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
  import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.data.Feed;
+ import org.apache.olingo.commons.api.data.EntitySet;
  import org.apache.olingo.commons.api.data.Link;
  import org.apache.olingo.commons.api.data.Property;
  import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
@@@ -407,17 -405,17 +406,17 @@@ public abstract class AbstractServices 
        if (contentTypeValue == Accept.XML || contentTypeValue == Accept.TEXT) {
          throw new UnsupportedMediaTypeException("Unsupported media type");
        } else if (contentTypeValue == Accept.ATOM) {
-         entryChanges = atomDeserializer.<AtomEntryImpl, AtomEntryImpl>read(
-                 IOUtils.toInputStream(changes, Constants.ENCODING), AtomEntryImpl.class).getPayload();
+         entryChanges = atomDeserializer.<AtomEntityImpl, AtomEntityImpl>read(
+                 IOUtils.toInputStream(changes, Constants.ENCODING), AtomEntityImpl.class).getPayload();
        } else {
-         final ResWrap<JSONEntryImpl> jcont = mapper.readValue(IOUtils.toInputStream(changes, Constants.ENCODING),
-                 new TypeReference<JSONEntryImpl>() {
+         final ResWrap<JSONEntityImpl> jcont = mapper.readValue(IOUtils.toInputStream(changes, Constants.ENCODING),
+                 new TypeReference<JSONEntityImpl>() {
 -                });
 +        });
  
-         entryChanges = dataBinder.toAtomEntry(jcont.getPayload());
+         entryChanges = dataBinder.toAtomEntity(jcont.getPayload());
        }
  
-       final ResWrap<AtomEntryImpl> container = atomDeserializer.read(entityInfo.getValue(), AtomEntryImpl.class);
+       final ResWrap<AtomEntityImpl> container = atomDeserializer.read(entityInfo.getValue(), AtomEntityImpl.class);
  
        for (Property property : entryChanges.getProperties()) {
          container.getPayload().getProperty(property.getName()).setValue(property.getValue());
@@@ -589,17 -587,17 +588,17 @@@
        } else {
          final Accept contentTypeValue = Accept.parse(contentType, version);
          if (Accept.ATOM == contentTypeValue) {
-           container = atomDeserializer.read(IOUtils.toInputStream(entity, Constants.ENCODING), AtomEntryImpl.class);
+           container = atomDeserializer.read(IOUtils.toInputStream(entity, Constants.ENCODING), AtomEntityImpl.class);
            entry = container.getPayload();
          } else {
-           final ResWrap<JSONEntryImpl> jcontainer =
+           final ResWrap<JSONEntityImpl> jcontainer =
                    mapper.readValue(IOUtils.toInputStream(entity, Constants.ENCODING),
-                   new TypeReference<JSONEntryImpl>() {
 -                          new TypeReference<JSONEntityImpl>() {
 -                          });
++                  new TypeReference<JSONEntityImpl>() {
 +          });
  
-           entry = dataBinder.toAtomEntry(jcontainer.getPayload());
+           entry = dataBinder.toAtomEntity(jcontainer.getPayload());
  
-           container = new ResWrap<AtomEntryImpl>(
+           container = new ResWrap<AtomEntityImpl>(
                    jcontainer.getContextURL(),
                    jcontainer.getMetadataETag(),
                    entry);
@@@ -619,10 -617,10 +618,10 @@@
        final InputStream serialization =
                xml.addOrReplaceEntity(null, entitySetName, new ByteArrayInputStream(content.toByteArray()), entry);
  
-       ResWrap<AtomEntryImpl> result = atomDeserializer.read(serialization, AtomEntryImpl.class);
-       result = new ResWrap<AtomEntryImpl>(
+       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);
@@@ -894,7 -892,7 +893,7 @@@
          } else {
            mapper.writeValue(
                    writer, new JSONFeedContainer(container.getContextURL(), container.getMetadataETag(),
-                   dataBinder.toJSONFeed(container.getPayload())));
 -                          dataBinder.toJSONEntitySet(container.getPayload())));
++                  dataBinder.toJSONEntitySet(container.getPayload())));
          }
  
          return xml.createResponse(
@@@ -1145,50 -1142,26 +1144,50 @@@
            final String changes,
            final boolean justValue) {
  
 +    // if the given path is not about any link then search for property
 +    LOG.info("Retrieve property {}", path);
 +
      try {
 -      Accept acceptType = null;
 -      if (StringUtils.isNotBlank(format)) {
 -        acceptType = Accept.valueOf(format.toUpperCase());
 -      } else if (StringUtils.isNotBlank(accept)) {
 -        acceptType = Accept.parse(accept, version, null);
 +      final FSManager fsManager = FSManager.instance(version);
 +
 +      final String basePath = Commons.getEntityBasePath(entitySetName, entityId);
-       final ResWrap<AtomEntryImpl> container = xml.readContainerEntry(Accept.ATOM,
++      final ResWrap<AtomEntityImpl> container = xml.readContainerEntry(Accept.ATOM,
 +              fsManager.readFile(basePath + Constants.get(version, ConstantKey.ENTITY), Accept.ATOM));
 +
-       final AtomEntryImpl entry = container.getPayload();
++      final AtomEntityImpl entry = container.getPayload();
 +
 +      Property toBeReplaced = null;
 +      for (String element : path.split("/")) {
 +        if (toBeReplaced == null) {
 +          toBeReplaced = entry.getProperty(element.trim());
 +        } else {
 +          ComplexValue value = toBeReplaced.getValue().asComplex();
 +          for (Property field : value.get()) {
 +            if (field.getName().equalsIgnoreCase(element)) {
 +              toBeReplaced = field;
 +            }
 +          }
 +        }
        }
  
 -      // if the given path is not about any link then search for property
 -      LOG.info("Retrieve property {}", path);
 +      if (toBeReplaced == null) {
 +        throw new NotFoundException();
 +      }
  
 -      final AbstractUtilities utils = getUtilities(acceptType);
 +      if (justValue) {
 +        // just for primitive values
 +        toBeReplaced.setValue(new PrimitiveValueImpl(changes));
 +      } else {
 +        final AtomPropertyImpl pchanges = xml.readProperty(
 +                Accept.parse(contentType, version),
 +                IOUtils.toInputStream(changes, Constants.ENCODING),
 +                entry.getType());
  
 -      utils.replaceProperty(
 -              entitySetName,
 -              entityId,
 -              IOUtils.toInputStream(changes, Constants.ENCODING),
 -              Arrays.asList(path.split("/")),
 -              acceptType,
 -              justValue);
 +        toBeReplaced.setValue(pchanges.getValue());
 +      }
 +
 +      fsManager.putInMemory(xml.writeEntry(Accept.ATOM, container),
 +              fsManager.getAbsolutePath(basePath + Constants.get(version, ConstantKey.ENTITY), Accept.ATOM));
  
        final Response response;
        if ("return-content".equalsIgnoreCase(prefer)) {
@@@ -1545,7 -1507,8 +1544,8 @@@
            final OutputStreamWriter writer = new OutputStreamWriter(content, Constants.ENCODING);
  
            if (linkInfo.isFeed()) {
-             final ResWrap<Feed> container = atomDeserializer.<Feed, AtomFeedImpl>read(stream, AtomFeedImpl.class);
 -            final ResWrap<EntitySet> container = 
++            final ResWrap<EntitySet> container =
+                     atomDeserializer.<EntitySet, AtomEntitySetImpl>read(stream, AtomEntitySetImpl.class);
  
              if (acceptType == Accept.ATOM) {
                atomSerializer.write(writer, container);
@@@ -1555,11 -1518,12 +1555,12 @@@
                mapper.writeValue(
                        writer,
                        new JSONFeedContainer(container.getContextURL(),
 -                              container.getMetadataETag(),
 -                              dataBinder.toJSONEntitySet((AtomEntitySetImpl) container.getPayload())));
 +                      container.getMetadataETag(),
-                       dataBinder.toJSONFeed((AtomFeedImpl) container.getPayload())));
++                      dataBinder.toJSONEntitySet((AtomEntitySetImpl) container.getPayload())));
              }
            } else {
-             final ResWrap<Entry> container = atomDeserializer.<Entry, AtomEntryImpl>read(stream, AtomEntryImpl.class);
 -            final ResWrap<Entity> container = 
++            final ResWrap<Entity> container =
+                     atomDeserializer.<Entity, AtomEntityImpl>read(stream, AtomEntityImpl.class);
              if (acceptType == Accept.ATOM) {
                atomSerializer.write(writer, container);
                writer.flush();
@@@ -1568,8 -1532,8 +1569,8 @@@
                mapper.writeValue(
                        writer,
                        new JSONEntryContainer(container.getContextURL(),
 -                              container.getMetadataETag(),
 -                              dataBinder.toJSONEntityType((AtomEntityImpl) container.getPayload())));
 +                      container.getMetadataETag(),
-                       dataBinder.toJSONEntry((AtomEntryImpl) container.getPayload())));
++                      dataBinder.toJSONEntityType((AtomEntityImpl) container.getPayload())));
              }
            }
  

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/639941c0/fit/src/main/java/org/apache/olingo/fit/metadata/Metadata.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/639941c0/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
----------------------------------------------------------------------
diff --cc fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
index bf1e4e3,57e2049..2882784
--- a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
@@@ -550,38 -551,31 +550,38 @@@ public abstract class AbstractUtilitie
      } else {
        mapper.writeValue(
                writer, new JSONFeedContainer(container.getContextURL(),
-               container.getMetadataETag(), dataBinder.toJSONFeed(container.getPayload())));
 -                      container.getMetadataETag(), dataBinder.toJSONEntitySet(container.getPayload())));
++              container.getMetadataETag(), dataBinder.toJSONEntitySet(container.getPayload())));
      }
  
      return IOUtils.toInputStream(writer.toString(), Constants.ENCODING);
    }
  
-   public ResWrap<AtomEntryImpl> readContainerEntry(final Accept accept, final InputStream entity)
 -  public AtomEntityImpl readEntry(final Accept accept, final InputStream entity)
++  public ResWrap<AtomEntityImpl> readContainerEntry(final Accept accept, final InputStream entity)
            throws XMLStreamException, IOException {
-     final ResWrap<AtomEntryImpl> container;
 -
 -    final AtomEntityImpl entry;
++    final ResWrap<AtomEntityImpl> container;
  
      if (accept == Accept.ATOM || accept == Accept.XML) {
-       container = atomDeserializer.read(entity, AtomEntryImpl.class);
 -      final ResWrap<AtomEntityImpl> container = atomDeserializer.read(entity, AtomEntityImpl.class);
 -      entry = container.getPayload();
++      container = atomDeserializer.read(entity, AtomEntityImpl.class);
      } else {
-       final ResWrap<JSONEntryImpl> jcontainer =
-               mapper.readValue(entity, new TypeReference<JSONEntryImpl>() {
 -      final ResWrap<JSONEntityImpl> container =
++      final ResWrap<JSONEntityImpl> jcontainer =
+               mapper.readValue(entity, new TypeReference<JSONEntityImpl>() {
 -              });
 -      entry = dataBinder.toAtomEntity(container.getPayload());
 +      });
-       container = new ResWrap<AtomEntryImpl>(
++      container = new ResWrap<AtomEntityImpl>(
 +              jcontainer.getContextURL(),
 +              jcontainer.getMetadataETag(),
-               dataBinder.toAtomEntry(jcontainer.getPayload()));
++              dataBinder.toAtomEntity(jcontainer.getPayload()));
      }
  
 -    return entry;
 +    return container;
 +  }
 +
-   public AtomEntryImpl readEntry(final Accept accept, final InputStream entity)
++  public AtomEntityImpl readEntry(final Accept accept, final InputStream entity)
 +          throws XMLStreamException, IOException {
 +    return readContainerEntry(accept, entity).getPayload();
 +
    }
  
-   public InputStream writeEntry(final Accept accept, final ResWrap<AtomEntryImpl> container)
+   public InputStream writeEntry(final Accept accept, final ResWrap<AtomEntityImpl> container)
            throws XMLStreamException, IOException {
  
      final StringWriter writer = new StringWriter();
@@@ -590,7 -584,7 +590,7 @@@
      } else {
        mapper.writeValue(
                writer, new JSONEntryContainer(container.getContextURL(), container.getMetadataETag(),
-               dataBinder.toJSONEntry(container.getPayload())));
 -                      dataBinder.toJSONEntityType(container.getPayload())));
++              dataBinder.toJSONEntityType(container.getPayload())));
      }
  
      return IOUtils.toInputStream(writer.toString(), Constants.ENCODING);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/639941c0/fit/src/main/java/org/apache/olingo/fit/utils/XMLUtilities.java
----------------------------------------------------------------------