dev@glassfish.java.net

Fwd: Re: [glassfish~svn:46704] Update for Grizzly 2.1.

From: Bhavanishankar <bhavanishankara.sapaliga_at_oracle.com>
Date: Fri, 06 May 2011 16:21:46 +0530

Sending it to dev_at_glassfish.

You can respond here.

Thanks,
Bhavani.

-------- Original Message --------
Subject: Re: [glassfish~svn:46704] Update for Grizzly 2.1.
Date: Fri, 06 May 2011 16:17:36 +0530
From: Bhavanishankar <bhavanishankara.sapaliga_at_oracle.com>
Reply-To: commits_at_glassfish.java.net
To: commits_at_glassfish.java.net



Hi Ryan Lubke,

Isn't this an incompatible change?

In the past, I knew some people in the community were also using
websocket application on Embedded GlassFish. Hence I had added this
devtest. Now that the package name of web socket classes itself is
changed, there is incompatibility b/w 3.1 and current 3.2-SNAPSHOT.

So, whoever was using websockets in 3.1 [embedded] glassfish, they all
have to change their applications so that it runs in 3.2?

Thanks,
Bhavani.

On 05/06/2011 01:30 AM, rlubke_at_java.net wrote:
> Project: glassfish
> Repository: svn
> Revision: 46704
> Author: rlubke
> Date: 2011-05-05 20:00:33 UTC
> Link:
>
> Log Message:
> ------------
> Update for Grizzly 2.1.
>
>
>
>
> Revisions:
> ----------
> 46704
>
>
> Modified Paths:
> ---------------
> trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/ChatApplication.java
> trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/WebSocketsServlet.java
> trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/ChatWebSocket.java
> trunk/v3/tests/embedded/maven-plugin/websockets/pom.xml
>
>
> Diffs:
> ------
> Index: trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/ChatApplication.java
> ===================================================================
> --- trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/ChatApplication.java (revision 46703)
> +++ trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/ChatApplication.java (revision 46704)
> @@ -40,24 +40,27 @@
>
> package com.sun.grizzly.samples.websockets;
>
> -import com.sun.grizzly.tcp.Request;
> -import com.sun.grizzly.websockets.DataFrame;
> -import com.sun.grizzly.websockets.NetworkHandler;
> -import com.sun.grizzly.websockets.WebSocket;
> -import com.sun.grizzly.websockets.WebSocketApplication;
> -import com.sun.grizzly.websockets.WebSocketListener;
> +import java.util.logging.Level;
>
> +import org.glassfish.grizzly.Connection;
> +import org.glassfish.grizzly.http.HttpRequestPacket;;
> +import org.glassfish.grizzly.websockets.DataFrame;
> +import org.glassfish.grizzly.websockets.NetworkHandler;
> +import org.glassfish.grizzly.websockets.WebSocket;
> +import org.glassfish.grizzly.websockets.WebSocketApplication;
> +import org.glassfish.grizzly.websockets.WebSocketListener;
> +
> import java.io.IOException;
>
> public class ChatApplication extends WebSocketApplication {
> @Override
> - public boolean isApplicationRequest(Request request) {
> - return request.requestURI().equals("/chat");
> + public boolean isApplicationRequest(HttpRequestPacket request) {
> + return "/chat".equals(request.getRequestURI());
> }
>
> @Override
> - public WebSocket createSocket(WebSocketListener... listeners) throws IOException {
> - return new ChatWebSocket();
> + public WebSocket createSocket(final Connection connection, WebSocketListener... listeners) {
> + return new ChatWebSocket(listeners);
> }
>
> public void onMessage(WebSocket socket, DataFrame frame) throws IOException {
> @@ -65,19 +68,27 @@
> if (data.startsWith("login:")) {
> login((ChatWebSocket) socket, frame);
> } else {
> - broadcast(((ChatWebSocket) socket).getUser() + " : " + data);
> + broadcast(((ChatWebSocket) socket).getUser(), data);
> }
> }
>
> - private void broadcast(String text) throws IOException {
> - WebSocketsServlet.logger.info("Broadcasting : " + text);
> - for (WebSocket webSocket : getWebSockets()) {
> - try {
> - webSocket.send(text);
> - } catch (IOException e) {
> - e.printStackTrace();
> - WebSocketsServlet.logger.info("Removing chat client: " + e.getMessage());
> - webSocket.close();
> + @Override
> + public void onClose(WebSocket websocket) {
> + broadcast("system", ((ChatWebSocket)websocket).getUser() + " left the chat");
> + }
> +
> + /**
> + * Broadcasts the text message from the user.
> + *
> + * @param user the user name
> + * @param text the text message
> + */
> + private void broadcast(String user, String text) {
> + WebSocketsServlet.logger.log(Level.INFO, "Broadcasting: {0} from: {1}", new Object[]{text, user});
> + for (WebSocket websocket : getWebSockets()) {
> + final ChatWebSocket chat = (ChatWebSocket) websocket;
> + if (chat.getUser() != null) { // it may happen some websocket is on the list, but not logged in to the chat
> + chat.sendJson(user, text);
> }
> }
>
> @@ -87,7 +98,7 @@
> if (socket.getUser() == null) {
> WebSocketsServlet.logger.info("ChatApplication.login");
> socket.setUser(frame.getTextPayload().split(":")[1].trim());
> - broadcast(socket.getUser() + " has joined the chat.");
> + broadcast(socket.getUser(), " has joined the chat.");
> }
> }
> }
> Index: trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/ChatWebSocket.java
> ===================================================================
> --- trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/ChatWebSocket.java (revision 46703)
> +++ trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/ChatWebSocket.java (revision 46704)
> @@ -40,14 +40,16 @@
>
> package com.sun.grizzly.samples.websockets;
>
> -import com.sun.grizzly.websockets.BaseServerWebSocket;
> -import com.sun.grizzly.websockets.NetworkHandler;
> -import com.sun.grizzly.websockets.WebSocketListener;
> +import org.glassfish.grizzly.websockets.BaseWebSocket;
> +import org.glassfish.grizzly.websockets.NetworkHandler;
> +import org.glassfish.grizzly.websockets.WebSocketListener;
> +import org.glassfish.grizzly.websockets.WebSocketException;
>
> +import java.util.logging.Level;
> import java.io.IOException;
>
> -public class ChatWebSocket extends BaseServerWebSocket {
> - private String user;
> +public class ChatWebSocket extends BaseWebSocket {
> + private volatile String user;
>
> public ChatWebSocket(WebSocketListener... listeners) {
> super(listeners);
> @@ -61,13 +63,25 @@
> this.user = user;
> }
>
> - @Override
> - public void send(String data) throws IOException {
> - super.send( toJsonp(getUser(), data) );
> + /**
> + * Send the message in JSON encoding acceptable by browser's javascript.
> + *
> + * @param user the user name
> + * @param text the text message
> + */
> + public void sendJson(String user, String text) {
> + try {
> + final String msg = toJsonp(user, text);
> + send(msg);
> + } catch (WebSocketException e) {
> + WebSocketsServlet.logger.log(Level.SEVERE, "Removing chat client: " + e.getMessage(), e);
> + close(PROTOCOL_ERROR, e.getMessage());
> + }
> }
>
> private String toJsonp(String name, String message) {
> - return "window.parent.app.update({ name: \"" + escape(name) + "\", message: \"" + escape(message) + "\" });\n";
> + return "window.parent.app.update({ name: \"" + escape(name) +
> + "\", message: \"" + escape(message) + "\" });\n";
> }
>
> private String escape(String orig) {
> Index: trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/WebSocketsServlet.java
> ===================================================================
> --- trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/WebSocketsServlet.java (revision 46703)
> +++ trunk/v3/tests/embedded/maven-plugin/websockets/src/main/java/com/sun/grizzly/samples/websockets/WebSocketsServlet.java (revision 46704)
> @@ -40,7 +40,7 @@
>
> package com.sun.grizzly.samples.websockets;
>
> -import com.sun.grizzly.websockets.WebSocketEngine;
> +import org.glassfish.grizzly.websockets.WebSocketEngine;
>
> import javax.servlet.ServletConfig;
> import javax.servlet.ServletException;
> Index: trunk/v3/tests/embedded/maven-plugin/websockets/pom.xml
> ===================================================================
> --- trunk/v3/tests/embedded/maven-plugin/websockets/pom.xml (revision 46703)
> +++ trunk/v3/tests/embedded/maven-plugin/websockets/pom.xml (revision 46704)
> @@ -182,15 +182,15 @@
> <scope>provided</scope>
> </dependency>
> <dependency>
> -<groupId>com.sun.grizzly</groupId>
> +<groupId>org.glassfish.grizzly</groupId>
> <artifactId>grizzly-websockets</artifactId>
> -<version>1.9.21</version>
> +<version>2.1</version>
> <scope>provided</scope>
> </dependency>
> <dependency>
> -<groupId>com.sun.grizzly</groupId>
> +<groupId>org.glassfish.grizzly</groupId>
> <artifactId>grizzly-http-servlet</artifactId>
> -<version>1.9.21</version>
> +<version>2.1</version>
> <scope>provided</scope>
> </dependency>
> <dependency>
>
>
>

-- 
Sun, an Oracle Company