Repository: olingo-odata4
Updated Branches:
  refs/heads/olingo-266-ref 70a989ce9 -> 7ba791e54


[OLINGO-266] first draft of ref handler


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

Branch: refs/heads/olingo-266-ref
Commit: 7ba791e54227be759853434b782ffd8da058d10f
Parents: 70a989c
Author: Stephan Klevenz <[email protected]>
Authored: Fri May 9 16:28:16 2014 +0200
Committer: Stephan Klevenz <[email protected]>
Committed: Fri May 9 16:28:16 2014 +0200

----------------------------------------------------------------------
 .../apache/olingo/server/api/ODataHandler.java  | 28 +++++++
 .../apache/olingo/server/api/ODataServer.java   |  7 +-
 .../olingo/server/core/ODataHandlerImpl.java    | 81 ++++++++++++++++++
 .../olingo/server/core/ODataServerImpl.java     | 19 ++---
 .../server/core/servlet/ODataServlet.java       | 86 --------------------
 .../olingo/server/ref/ReferenceServlet.java     |  7 +-
 6 files changed, 123 insertions(+), 105 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ba791e5/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataHandler.java
----------------------------------------------------------------------
diff --git 
a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataHandler.java 
b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataHandler.java
new file mode 100644
index 0000000..ff0ab06
--- /dev/null
+++ 
b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataHandler.java
@@ -0,0 +1,28 @@
+/*
+ * 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.api;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public interface ODataHandler {
+
+  void process(HttpServletRequest request, HttpServletResponse response);
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ba791e5/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 7390189..6ab0270 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
@@ -18,10 +18,8 @@
  */
 package org.apache.olingo.server.api;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 import org.apache.olingo.commons.api.ODataRuntimeException;
+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;
 
@@ -38,6 +36,7 @@ public abstract class ODataServer {
        * and avoid class loading issues also during hot deployment.
        */
       final Object object = clazz.newInstance();
+
       return (ODataServer) object;
 
     } catch (final Exception e) {
@@ -48,6 +47,6 @@ public abstract class ODataServer {
 
   public abstract ODataSerializer getSerializer(ODataFormat format);
 
-  public abstract void handle(HttpServletRequest req, HttpServletResponse 
resp);
+  public abstract ODataHandler getHandler(EdmProvider edmProvider);
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ba791e5/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
new file mode 100644
index 0000000..b4e7bab
--- /dev/null
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandlerImpl.java
@@ -0,0 +1,81 @@
+/*
+ * 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.IOException;
+import java.io.InputStream;
+
+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.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 ODataServer server;
+  
+  public ODataHandlerImpl(ODataServer server, EdmProvider edmProvider) {
+    this.edmProvider = edmProvider;
+    this.server = server;
+  }
+
+  @Override
+  public void process(HttpServletRequest request, HttpServletResponse 
response) {
+    try {
+      EdmProviderImpl edm = new EdmProviderImpl(edmProvider);
+
+      InputStream responseEntity = null;
+      if (request.getPathInfo().contains("$metadata")) {
+        ODataSerializer serializer = server.getSerializer(ODataFormat.XML);
+        responseEntity = serializer.metadataDocument(edm);
+      } else {
+        ODataSerializer serializer = server.getSerializer(ODataFormat.JSON);
+        responseEntity = serializer.serviceDocument(edm, "http//:root");
+      }
+
+      response.setStatus(200);
+      response.setContentType("application/json");
+
+      if (responseEntity != null) {
+        ServletOutputStream out = response.getOutputStream();
+        int curByte = -1;
+        if (responseEntity instanceof InputStream) {
+          while ((curByte = ((InputStream) responseEntity).read()) != -1) {
+            out.write((char) curByte);
+          }
+          ((InputStream) responseEntity).close();
+        }
+
+        out.flush();
+        out.close();
+      }
+
+    } catch (Exception e) {
+      throw new ODataRuntimeException(e);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ba791e5/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 933422d..4827fa5 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
@@ -18,13 +18,10 @@
  */
 package org.apache.olingo.server.core;
 
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 import org.apache.olingo.commons.api.ODataRuntimeException;
+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.serializer.ODataJsonSerializer;
@@ -50,14 +47,10 @@ public class ODataServerImpl extends ODataServer {
   }
 
   @Override
-  public void handle(HttpServletRequest req, HttpServletResponse resp) {
-    
-    try {
-      resp.getWriter().print("Hello World!");
-    } catch (IOException e) {
-      throw new ODataRuntimeException(e);
-    }
-    
+  public ODataHandler getHandler(EdmProvider edmProvider) {
+    return new ODataHandlerImpl(this, edmProvider);
   }
 
+
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ba791e5/lib/server-core/src/main/java/org/apache/olingo/server/core/servlet/ODataServlet.java
----------------------------------------------------------------------
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/servlet/ODataServlet.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/servlet/ODataServlet.java
deleted file mode 100644
index b6d31c9..0000000
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/servlet/ODataServlet.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.servlet;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-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.ODataServerImpl;
-import org.apache.olingo.server.core.edm.provider.EdmProviderImpl;
-
-public class ODataServlet extends HttpServlet {
-
-  private static final long serialVersionUID = 1L;
-
-  private HttpServletResponse resp;
-
-  @Override
-  protected void service(final HttpServletRequest req, final 
HttpServletResponse resp) throws IOException {
-    this.resp = resp;
-
-    EdmProvider provider = createEdmProvider();
-    EdmProviderImpl edm = new EdmProviderImpl(provider);
-
-    ODataServerImpl impl = new ODataServerImpl();
-    InputStream responseEntity = null;
-    if (req.getPathInfo().contains("$metadata")) {
-      ODataSerializer serializer = impl.getSerializer(ODataFormat.XML);
-      responseEntity = serializer.metadataDocument(edm);
-    } else {
-      ODataSerializer serializer = impl.getSerializer(ODataFormat.JSON);
-      responseEntity = serializer.serviceDocument(edm, "http//:root");
-    }
-    sendResponse(responseEntity);
-  }
-
-  protected EdmProvider createEdmProvider() {
-    return null;
-  }
-
-  // TODO: check throws
-  private void sendResponse(final Object entity) throws IOException {
-    resp.setStatus(200);
-    resp.setContentType("application/json");
-    if (entity != null) {
-      ServletOutputStream out = resp.getOutputStream();
-      int curByte = -1;
-      if (entity instanceof InputStream) {
-        while ((curByte = ((InputStream) entity).read()) != -1) {
-          out.write((char) curByte);
-        }
-        ((InputStream) entity).close();
-      } else if (entity instanceof String) {
-        String body = (String) entity;
-        out.write(body.getBytes("utf-8"));
-      }
-
-      out.flush();
-      out.close();
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ba791e5/lib/server-ref/src/main/java/org/apache/olingo/server/ref/ReferenceServlet.java
----------------------------------------------------------------------
diff --git 
a/lib/server-ref/src/main/java/org/apache/olingo/server/ref/ReferenceServlet.java
 
b/lib/server-ref/src/main/java/org/apache/olingo/server/ref/ReferenceServlet.java
index 0be695f..47daecb 100644
--- 
a/lib/server-ref/src/main/java/org/apache/olingo/server/ref/ReferenceServlet.java
+++ 
b/lib/server-ref/src/main/java/org/apache/olingo/server/ref/ReferenceServlet.java
@@ -25,7 +25,9 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.olingo.server.api.ODataHandler;
 import org.apache.olingo.server.api.ODataServer;
+import org.apache.olingo.server.ref.provider.EdmTechProvider;
 
 public class ReferenceServlet extends HttpServlet {
 
@@ -34,8 +36,9 @@ public class ReferenceServlet extends HttpServlet {
   @Override
   protected void service(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
     
-    ODataServer server = ODataServer.newInstance();
-    server.handle(req, resp);
+    ODataHandler handler = ODataServer.newInstance().getHandler(new 
EdmTechProvider());
+    
+    handler.process(req, resp);
     
   }
 

Reply via email to