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/09 16:28:25 UTC
git commit: [OLINGO-266] first draft of ref handler
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 <st...@sap.com>
Authored: Fri May 9 16:28:16 2014 +0200
Committer: Stephan Klevenz <st...@sap.com>
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);
}