You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2012/10/06 18:45:10 UTC

svn commit: r1395113 - in /openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet: ApplicationSocketConnection.java ApplicationSocketServlet.java

Author: tveronezi
Date: Sat Oct  6 16:45:09 2012
New Revision: 1395113

URL: http://svn.apache.org/viewvc?rev=1395113&view=rev
Log:
https://issues.apache.org/jira/browse/TOMEE-447

Added:
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketConnection.java
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketServlet.java

Added: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketConnection.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketConnection.java?rev=1395113&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketConnection.java (added)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketConnection.java Sat Oct  6 16:45:09 2012
@@ -0,0 +1,82 @@
+/*
+ * 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.tomee.webapp.servlet;
+
+import com.google.gson.Gson;
+import org.apache.catalina.websocket.StreamInbound;
+import org.apache.catalina.websocket.WsOutbound;
+import org.apache.tomee.webapp.command.CommandExecutor;
+import org.apache.tomee.webapp.command.CommandSession;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.nio.CharBuffer;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ApplicationSocketConnection extends StreamInbound implements CommandSession {
+    private Gson gson = new Gson();
+    private Map<String, Object> attributes = new HashMap<String, Object>();
+
+    private String readParam(Reader in) throws IOException {
+
+        try {
+            final StringBuilder buf = new StringBuilder();
+            for (int c = in.read(); c != -1; c = in.read()) {
+                buf.append((char) c);
+            }
+
+            return buf.toString();
+        } finally {
+            try {
+                in.close();
+            } catch (Exception e) {
+                // ignored
+            }
+        }
+    }
+
+    @Override
+    protected void onBinaryData(InputStream inputStream) throws IOException {
+        throw new UnsupportedOperationException("Binary message not supported");
+    }
+
+    protected WsOutbound getOutputObject() {
+        return getWsOutbound();
+    }
+
+    @Override
+    protected void onTextData(Reader in) throws IOException {
+        final String params = readParam(in);
+        final CommandExecutor executor = new CommandExecutor();
+
+        final Map<String, Object> result = executor.execute(this, params);
+        getOutputObject().writeTextMessage(CharBuffer.wrap(gson.toJson(result)));
+    }
+
+    @Override
+    public Object get(String key) {
+        return this.attributes.get(key);
+    }
+
+    @Override
+    public void set(String key, Object value) {
+        this.attributes.put(key, value);
+    }
+}

Added: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketServlet.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketServlet.java?rev=1395113&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketServlet.java (added)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketServlet.java Sat Oct  6 16:45:09 2012
@@ -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.tomee.webapp.servlet;
+
+import org.apache.catalina.websocket.StreamInbound;
+import org.apache.catalina.websocket.WebSocketServlet;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class ApplicationSocketServlet extends WebSocketServlet {
+
+    @Override
+    protected StreamInbound createWebSocketInbound(
+            String s,
+            HttpServletRequest httpServletRequest) {
+        return new ApplicationSocketConnection();
+    }
+}