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

[14/50] [abbrv] git commit: [OLINGO-266] ODataHandler

[OLINGO-266] ODataHandler


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

Branch: refs/heads/master
Commit: f92ab0a0ec447733fc1dcbcee56febbd05ed8f1f
Parents: a8f8d52
Author: Stephan Klevenz <st...@sap.com>
Authored: Wed May 14 14:34:21 2014 +0200
Committer: Stephan Klevenz <st...@sap.com>
Committed: Mon May 19 14:27:04 2014 +0200

----------------------------------------------------------------------
 .../olingo/commons/api/http/HttpMethod.java     | 33 +++++++
 .../apache/olingo/server/api/ODataServer.java   |  7 +-
 .../org/apache/olingo/server/core/Decoder.java  | 90 ++++++++++++++++++++
 .../olingo/server/core/ODataHandlerImpl.java    | 81 +++++++++++++++---
 .../apache/olingo/server/core/ODataRequest.java | 74 ++++++++++++++++
 .../olingo/server/core/ODataResponse.java       | 23 +++++
 .../olingo/server/core/ODataServerImpl.java     | 13 ++-
 .../olingo/server/tecsvc/TechnicalServlet.java  | 14 +--
 .../serializer/json/ServiceDocumentTest.java    |  2 +-
 .../serializer/xml/MetadataDocumentTest.java    |  8 +-
 10 files changed, 317 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f92ab0a0/lib/commons-api/src/main/java/org/apache/olingo/commons/api/http/HttpMethod.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/http/HttpMethod.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/http/HttpMethod.java
new file mode 100644
index 0000000..f7d7c45
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/http/HttpMethod.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.commons.api.http;
+
+/**
+ * Supported HTTP methods.
+ */
+public enum HttpMethod {
+
+  GET,
+  POST,
+  PUT,
+  PATCH,
+  MERGE,
+  DELETE;
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f92ab0a0/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataServer.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataServer.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataServer.java
index 6ab0270..2d35100 100644
--- a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataServer.java
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataServer.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.server.api;
 
 import org.apache.olingo.commons.api.ODataRuntimeException;
+import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.server.api.edm.provider.EdmProvider;
 import org.apache.olingo.server.api.serializer.ODataFormat;
 import org.apache.olingo.server.api.serializer.ODataSerializer;
@@ -45,8 +46,10 @@ public abstract class ODataServer {
     }
   }
 
-  public abstract ODataSerializer getSerializer(ODataFormat format);
+  public abstract ODataSerializer createSerializer(ODataFormat format);
 
-  public abstract ODataHandler getHandler(EdmProvider edmProvider);
+  public abstract ODataHandler createHandler(Edm edm);
+
+  public abstract Edm createEdm(EdmProvider edmProvider);
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f92ab0a0/lib/server-core/src/main/java/org/apache/olingo/server/core/Decoder.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/Decoder.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/Decoder.java
new file mode 100644
index 0000000..e3eb5e9
--- /dev/null
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/Decoder.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.server.core;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * Decodes a Java String containing a percent-encoded UTF-8 String value
+ * into a Java String (in its internal UTF-16 encoding).
+ * 
+ */
+public class Decoder {
+
+  /**
+   * Decodes a percent-encoded UTF-8 String value into a Java String
+   * (in its internal UTF-16 encoding).
+   * @param value the encoded String
+   * @return the Java String
+   * @throws IllegalArgumentException if value contains characters not representing UTF-8 bytes
+   * or ends with an unfinished percent-encoded character
+   * @throws NumberFormatException if the two characters after a percent character
+   * are not hexadecimal digits
+   */
+  public static String decode(final String value) throws IllegalArgumentException, NumberFormatException {
+    if (value == null) {
+      return value;
+    }
+
+    // Use a tiny finite-state machine to handle decoding on byte level.
+    // There are only three states:
+    // -2: normal bytes
+    // -1: a byte representing the percent character has been read
+    // >= 0: a byte representing the first half-byte of a percent-encoded byte has been read
+    // The variable holding the state is also used to store the value of the first half-byte.
+    byte[] result = new byte[value.length()];
+    int position = 0;
+    byte encodedPart = -2;
+    for (final char c : value.toCharArray()) {
+      if (c <= Byte.MAX_VALUE) {
+        if (c == '%') {
+          if (encodedPart == -2) {
+            encodedPart = -1;
+          } else {
+            throw new IllegalArgumentException();
+          }
+        } else if (encodedPart == -1) {
+          encodedPart = (byte) c;
+        } else if (encodedPart >= 0) {
+          final int i = Integer.parseInt(String.valueOf(new char[] { (char) encodedPart, c }), 16);
+          if (i >= 0) {
+            result[position++] = (byte) i;
+          } else {
+            throw new NumberFormatException();
+          }
+          encodedPart = -2;
+        } else {
+          result[position++] = (byte) c;
+        }
+      } else {
+        throw new IllegalArgumentException();
+      }
+    }
+
+    if (encodedPart >= 0) {
+      throw new IllegalArgumentException();
+    }
+
+    try {
+      return new String(result, 0, position, "UTF-8");
+    } catch (UnsupportedEncodingException e) {
+      throw new IllegalArgumentException(e);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f92ab0a0/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandlerImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandlerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandlerImpl.java
index b4e7bab..a516689 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandlerImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandlerImpl.java
@@ -18,42 +18,68 @@
  */
 package org.apache.olingo.server.core;
 
-import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.olingo.commons.api.ODataRuntimeException;
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.http.HttpMethod;
 import org.apache.olingo.server.api.ODataHandler;
 import org.apache.olingo.server.api.ODataServer;
-import org.apache.olingo.server.api.edm.provider.EdmProvider;
 import org.apache.olingo.server.api.serializer.ODataFormat;
 import org.apache.olingo.server.api.serializer.ODataSerializer;
-import org.apache.olingo.server.core.edm.provider.EdmProviderImpl;
 
 public class ODataHandlerImpl implements ODataHandler {
 
-  private EdmProvider edmProvider;
+  private Edm edm;
   private ODataServer server;
-  
-  public ODataHandlerImpl(ODataServer server, EdmProvider edmProvider) {
-    this.edmProvider = edmProvider;
+
+  public ODataHandlerImpl(ODataServer server, Edm edm) {
+    this.edm = edm;
     this.server = server;
   }
 
   @Override
   public void process(HttpServletRequest request, HttpServletResponse response) {
+    ODataRequest odRequest = createODataRequest(request);
+    ODataResponse odResponse;
+   
+    //        odResponse = process(odRequest);
+//    convertToHttp(response, odResponse);
+  }
+
+  private ODataRequest createODataRequest(HttpServletRequest request) {
     try {
-      EdmProviderImpl edm = new EdmProviderImpl(edmProvider);
+      ODataRequest odRequest = new ODataRequest();
 
+      odRequest.setBody(request.getInputStream());
+      odRequest.setHeaders(extractHeaders(request));
+      odRequest.setQueryParameters(extractQueryParameters(request.getQueryString()));
+      odRequest.setMethod(HttpMethod.valueOf(request.getMethod()));
+
+      return odRequest;
+    } catch (Exception e) {
+      throw new ODataRuntimeException(e);
+    }
+  }
+
+  public void processx(HttpServletRequest request, HttpServletResponse response) {
+    try {
       InputStream responseEntity = null;
       if (request.getPathInfo().contains("$metadata")) {
-        ODataSerializer serializer = server.getSerializer(ODataFormat.XML);
+        ODataSerializer serializer = server.createSerializer(ODataFormat.XML);
         responseEntity = serializer.metadataDocument(edm);
       } else {
-        ODataSerializer serializer = server.getSerializer(ODataFormat.JSON);
+        ODataSerializer serializer = server.createSerializer(ODataFormat.JSON);
         responseEntity = serializer.serviceDocument(edm, "http//:root");
       }
 
@@ -78,4 +104,39 @@ public class ODataHandlerImpl implements ODataHandler {
       throw new ODataRuntimeException(e);
     }
   }
+
+  private Map<String, String> extractQueryParameters(final String queryString) {
+    Map<String, String> queryParametersMap = new HashMap<String, String>();
+    if (queryString != null) {
+      // At first the queryString will be decoded.
+      List<String> queryParameters = Arrays.asList(Decoder.decode(queryString).split("\\&"));
+      for (String param : queryParameters) {
+        int indexOfEqualSign = param.indexOf("=");
+        if (indexOfEqualSign < 0) {
+          queryParametersMap.put(param, "");
+        } else {
+          queryParametersMap.put(param.substring(0, indexOfEqualSign), param.substring(indexOfEqualSign + 1));
+        }
+      }
+    }
+    return queryParametersMap;
+  }
+
+  private Map<String, List<String>> extractHeaders(final HttpServletRequest req) {
+    Map<String, List<String>> requestHeaders = new HashMap<String, List<String>>();
+    for (Enumeration<String> headerNames = req.getHeaderNames(); headerNames.hasMoreElements();) {
+      String headerName = headerNames.nextElement();
+      List<String> headerValues = new ArrayList<String>();
+      for (Enumeration<String> headers = req.getHeaders(headerName); headers.hasMoreElements();) {
+        String value = headers.nextElement();
+        headerValues.add(value);
+      }
+      if (requestHeaders.containsKey(headerName)) {
+        requestHeaders.get(headerName).addAll(headerValues);
+      } else {
+        requestHeaders.put(headerName, headerValues);
+      }
+    }
+    return requestHeaders;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f92ab0a0/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataRequest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataRequest.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataRequest.java
new file mode 100644
index 0000000..daea101
--- /dev/null
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataRequest.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.core;
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.commons.api.http.HttpMethod;
+
+public class ODataRequest {
+  private HttpMethod method;
+  private Map<String, List<String>> headers = new HashMap<String, List<String>>();
+  private InputStream body;
+  private Map<String, String> queryParameters;
+  private String contentType;
+
+  public HttpMethod getMethod() {
+    return method;
+  }
+
+  public void setMethod(HttpMethod method) {
+    this.method = method;
+  }
+
+  public Map<String, List<String>> getHeaders() {
+    return headers;
+  }
+
+  public void setHeaders(Map<String, List<String>> headers) {
+    this.headers = headers;
+  }
+
+  public InputStream getBody() {
+    return body;
+  }
+
+  public void setBody(InputStream body) {
+    this.body = body;
+  }
+
+  public Map<String, String> getQueryParameters() {
+    return queryParameters;
+  }
+
+  public void setQueryParameters(Map<String, String> queryParameters) {
+    this.queryParameters = queryParameters;
+  }
+
+  public String getContentType() {
+    return contentType;
+  }
+
+  public void setContentType(String contentType) {
+    this.contentType = contentType;
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f92ab0a0/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataResponse.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataResponse.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataResponse.java
new file mode 100644
index 0000000..7bcf7d3
--- /dev/null
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.server.core;
+
+public class ODataResponse {
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f92ab0a0/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataServerImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataServerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataServerImpl.java
index 4827fa5..5ac9d37 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataServerImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataServerImpl.java
@@ -19,18 +19,20 @@
 package org.apache.olingo.server.core;
 
 import org.apache.olingo.commons.api.ODataRuntimeException;
+import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.server.api.ODataHandler;
 import org.apache.olingo.server.api.ODataServer;
 import org.apache.olingo.server.api.edm.provider.EdmProvider;
 import org.apache.olingo.server.api.serializer.ODataFormat;
 import org.apache.olingo.server.api.serializer.ODataSerializer;
+import org.apache.olingo.server.core.edm.provider.EdmProviderImpl;
 import org.apache.olingo.server.core.serializer.ODataJsonSerializer;
 import org.apache.olingo.server.core.serializer.ODataXmlSerializerImpl;
 
 public class ODataServerImpl extends ODataServer {
 
   @Override
-  public ODataSerializer getSerializer(final ODataFormat format) {
+  public ODataSerializer createSerializer(final ODataFormat format) {
     ODataSerializer serializer;
     switch (format) {
     case JSON:
@@ -47,10 +49,13 @@ public class ODataServerImpl extends ODataServer {
   }
 
   @Override
-  public ODataHandler getHandler(EdmProvider edmProvider) {
-    return new ODataHandlerImpl(this, edmProvider);
+  public ODataHandler createHandler(Edm edm) {
+    return new ODataHandlerImpl(this, edm);
   }
 
-
+  @Override
+  public Edm createEdm(EdmProvider edmProvider) {
+    return new EdmProviderImpl(edmProvider);
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f92ab0a0/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/TechnicalServlet.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/TechnicalServlet.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/TechnicalServlet.java
index 21d1ae3..1f6b6bf 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/TechnicalServlet.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/TechnicalServlet.java
@@ -25,6 +25,7 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.server.api.ODataHandler;
 import org.apache.olingo.server.api.ODataServer;
 import org.apache.olingo.server.tecsvc.provider.EdmTechProvider;
@@ -36,16 +37,15 @@ public class TechnicalServlet extends HttpServlet {
   private static final long serialVersionUID = 1L;
 
   private static final Logger LOG = LoggerFactory.getLogger(TechnicalServlet.class);
-  
+
   @Override
   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     LOG.debug("ReferenceServlet:service() called");
-    
-    
-    ODataHandler handler = ODataServer.newInstance().getHandler(new EdmTechProvider());
-    
+
+    ODataServer server = ODataServer.newInstance();
+    Edm edm = server.createEdm(new EdmTechProvider());
+
+    ODataHandler handler = server.createHandler(edm);
     handler.process(req, resp);
-    
   }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f92ab0a0/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
index 8713348..95ccfe9 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
@@ -111,7 +111,7 @@ public class ServiceDocumentTest {
     ODataServer server = ODataServer.newInstance();
     assertNotNull(server);
 
-    ODataSerializer serializer = server.getSerializer(ODataFormat.JSON);
+    ODataSerializer serializer = server.createSerializer(ODataFormat.JSON);
     assertNotNull(serializer);
 
     InputStream result = serializer.serviceDocument(edm, serviceRoot);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f92ab0a0/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
index 17ac957..c17ed1f 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
@@ -65,20 +65,20 @@ public class MetadataDocumentTest {
 
   @Test(expected = ODataRuntimeException.class)
   public void metadataOnJsonResultsInException() {
-    ODataSerializer serializer = ODataServer.newInstance().getSerializer(ODataFormat.JSON);
+    ODataSerializer serializer = ODataServer.newInstance().createSerializer(ODataFormat.JSON);
     serializer.metadataDocument(mock(Edm.class));
   }
 
   @Test
   public void writeMetadataWithEmptyMockedEdm() {
-    ODataSerializer serializer = ODataServer.newInstance().getSerializer(ODataFormat.XML);
+    ODataSerializer serializer = ODataServer.newInstance().createSerializer(ODataFormat.XML);
     Edm edm = mock(Edm.class);
     serializer.metadataDocument(edm);
   }
 
   @Test
   public void writeMetadataWithLocalTestEdm() throws Exception {
-    ODataSerializer serializer = ODataServer.newInstance().getSerializer(ODataFormat.XML);
+    ODataSerializer serializer = ODataServer.newInstance().createSerializer(ODataFormat.XML);
     Edm edm = new EdmProviderImpl(new TestMetadataProvider());
     InputStream metadata = serializer.metadataDocument(edm);
     assertNotNull(metadata);
@@ -147,7 +147,7 @@ public class MetadataDocumentTest {
 
   @Test
   public void writeMetadataWithTechnicalScenario() {
-    ODataSerializer serializer = ODataServer.newInstance().getSerializer(ODataFormat.XML);
+    ODataSerializer serializer = ODataServer.newInstance().createSerializer(ODataFormat.XML);
     EdmProviderImpl edm = new EdmProviderImpl(new EdmTechProvider());
     InputStream metadata = serializer.metadataDocument(edm);
     assertNotNull(metadata);