From 3efa16fe0a8b784a055317decc7ca915d79ce18e Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Mon, 1 Aug 2016 12:16:54 +0200 Subject: [PATCH] Added check for empty messages --- main/resources/log4j2.xml | 2 +- pages/index.html | 3 ++- pages/js/message.js | 10 ++++++---- .../github/norbipeti/chat/server/IOHelper.java | 12 +++++++++++- src/io/github/norbipeti/chat/server/Main.java | 8 ++++---- .../chat/server/db/domain/Conversation.java | 7 ++++++- .../chat/server/db/domain/Message.java | 4 ++-- .../norbipeti/chat/server/db/domain/User.java | 4 +++- .../chat/server/page/MessageAjaxPage.java | 18 ++++++++++++++++-- 9 files changed, 51 insertions(+), 17 deletions(-) diff --git a/main/resources/log4j2.xml b/main/resources/log4j2.xml index 8d278b7..9467053 100644 --- a/main/resources/log4j2.xml +++ b/main/resources/log4j2.xml @@ -10,7 +10,7 @@ - + diff --git a/pages/index.html b/pages/index.html index f2a730a..21ec873 100644 --- a/pages/index.html +++ b/pages/index.html @@ -6,6 +6,7 @@ + @@ -81,6 +82,6 @@
- +
diff --git a/pages/js/message.js b/pages/js/message.js index 373e010..1d4c9a4 100644 --- a/pages/js/message.js +++ b/pages/js/message.js @@ -10,10 +10,14 @@ var respfunc = function respfunc(result) { var sendmsgonenter = function sendmsgonenter(e) { //TODO: Detect Enter var code = e.keyCode || e.which; - if (code != 13) { //Enter keycode + if (code != 13 || e.shiftKey) { //Enter keycode return; } + e.preventDefault(); var textarea = event.target; + if (textarea.value.trim().length == 0) + return; + textarea.disabled = true; window.convid = 1; var json = JSON.stringify({"message": textarea.value, "conversation": window.convid}); $.ajax({ @@ -22,7 +26,5 @@ var sendmsgonenter = function sendmsgonenter(e) { //TODO: Detect Enter }; $(document).ready(function () { - $('#msginput').on("keypress", sendmsgonenter); + $('#msginput').on("keydown", sendmsgonenter); }); - -$('#msginput').on("keypress", sendmsgonenter); diff --git a/src/io/github/norbipeti/chat/server/IOHelper.java b/src/io/github/norbipeti/chat/server/IOHelper.java index 736d0d4..6aa4ac9 100644 --- a/src/io/github/norbipeti/chat/server/IOHelper.java +++ b/src/io/github/norbipeti/chat/server/IOHelper.java @@ -1,5 +1,7 @@ package io.github.norbipeti.chat.server; +import java.io.BufferedOutputStream; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -29,7 +31,15 @@ import io.github.norbipeti.chat.server.page.Page; public class IOHelper { public static void SendResponse(int code, String content, HttpExchange exchange) throws IOException { exchange.sendResponseHeaders(code, content.length()); - IOUtils.write(content, exchange.getResponseBody(), StandardCharsets.UTF_8); + try (BufferedOutputStream out = new BufferedOutputStream(exchange.getResponseBody())) { + try (ByteArrayInputStream bis = new ByteArrayInputStream(content.getBytes())) { + byte[] buffer = new byte[512]; + int count; + while ((count = bis.read(buffer)) != -1) { + out.write(buffer, 0, count); + } + } + } exchange.getResponseBody().close(); } diff --git a/src/io/github/norbipeti/chat/server/Main.java b/src/io/github/norbipeti/chat/server/Main.java index aff36e4..0a9d71d 100644 --- a/src/io/github/norbipeti/chat/server/Main.java +++ b/src/io/github/norbipeti/chat/server/Main.java @@ -50,10 +50,10 @@ public class Main { LogManager.getLogger().log(Level.DEBUG, "1st's contact: " + user.getContacts().get(0)); LogManager.getLogger().log(Level.DEBUG, "2nd's contact: " + user2.getContacts().get(0)); Conversation convo = new Conversation(); - convo.getUsers().add(user); - // user.getConversations().add(convo); - convo.getUsers().add(user2); - // user2.getConversations().add(convo); - TODO: Fix duplicate + //convo.getUsers().add(user); + //user.getConversations().add(convo); + //convo.getUsers().add(user2); + //user2.getConversations().add(convo); //TODO: Fix duplicate // key constraint Message msg = new Message(); msg.setSender(user); diff --git a/src/io/github/norbipeti/chat/server/db/domain/Conversation.java b/src/io/github/norbipeti/chat/server/db/domain/Conversation.java index f9b7ed3..d4f055f 100644 --- a/src/io/github/norbipeti/chat/server/db/domain/Conversation.java +++ b/src/io/github/norbipeti/chat/server/db/domain/Conversation.java @@ -17,7 +17,12 @@ public class Conversation extends ChatDatabaseEntity { @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "conversation") private List messsages; @ElementCollection(fetch = FetchType.EAGER) - @ManyToMany(cascade = CascadeType.ALL) + @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) + // @JoinTable(name = "User_Conversation", joinColumns = @JoinColumn(name = + // "conversation_id", referencedColumnName = "id", unique = false), + // inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = + // "id", unique = false), uniqueConstraints = @UniqueConstraint(name = + // "USER_CONV_UN", columnNames = {"user_id", "conversation_id" })) @JoinTable(name = "User_Conversation", joinColumns = @JoinColumn(name = "conversation_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id")) private Set users; diff --git a/src/io/github/norbipeti/chat/server/db/domain/Message.java b/src/io/github/norbipeti/chat/server/db/domain/Message.java index 5a6d759..b26cbcb 100644 --- a/src/io/github/norbipeti/chat/server/db/domain/Message.java +++ b/src/io/github/norbipeti/chat/server/db/domain/Message.java @@ -10,12 +10,12 @@ public class Message extends ChatDatabaseEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", unique = true, nullable = false) private Long id; - @ManyToOne(cascade=CascadeType.ALL) + @ManyToOne //@JoinTable(name="user_message") private User sender; private Date time; private String message; - @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @ManyToOne(fetch = FetchType.EAGER) //@JoinTable(name="conversation_message") private Conversation conversation; diff --git a/src/io/github/norbipeti/chat/server/db/domain/User.java b/src/io/github/norbipeti/chat/server/db/domain/User.java index 332b407..8970a50 100644 --- a/src/io/github/norbipeti/chat/server/db/domain/User.java +++ b/src/io/github/norbipeti/chat/server/db/domain/User.java @@ -25,7 +25,9 @@ public class User extends ChatDatabaseEntity { private String sessionid; @ElementCollection(fetch = FetchType.EAGER) // @ManyToMany(fetch = FetchType.EAGER, mappedBy = "users") - @ManyToMany(mappedBy = "users", fetch = FetchType.EAGER) + @ManyToMany(mappedBy = "users", fetch = FetchType.EAGER, cascade = CascadeType.ALL) + // @ManyToMany(mappedBy = "users") + //@JoinTable(name = "User_Conversation", joinColumns = @JoinColumn(referencedColumnName = "id", unique = false), inverseJoinColumns = @JoinColumn(referencedColumnName = "id", unique = false)) private Set conversations; public List getContacts() { diff --git a/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java b/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java index 708c9a2..3aceee8 100644 --- a/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java +++ b/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java @@ -35,11 +35,24 @@ public class MessageAjaxPage extends Page { } JSONObject obj = IOHelper.GetPOSTJSON(exchange); if (obj == null) { - IOHelper.SendResponse(400, "

400 Bad request

Not a JSON string!

", exchange); + IOHelper.SendResponse(400, + "

400 Bad request

Not a JSON string!

" + IOHelper.GetPOST(exchange) + "

", + exchange); + return; + } + if (!obj.has("message") || !obj.has("conversation")) { + IOHelper.SendResponse(400, + "

400 Bad request

Message or conversation not found in JSON response.

" + + IOHelper.GetPOST(exchange) + "

", + exchange); return; } String message = obj.getString("message"); int conversation = obj.getInt("conversation"); + if (message.trim().length() == 0) { + IOHelper.SendResponse(400, "

400 Bad request

The message cannot be empty,

", exchange); + return; + } Set convos = user.getConversations(); Conversation conv = null; LogManager.getLogger().log(Level.DEBUG, "Len: " + convos.size()); @@ -64,7 +77,8 @@ public class MessageAjaxPage extends Page { provider.save(msg); conv.getMesssages().add(msg); provider.save(conv); - LogManager.getLogger().log(Level.DEBUG, "Added conversation's message count: " + conv.getMesssages().size()); + LogManager.getLogger().log(Level.DEBUG, + "Added conversation's message count: " + conv.getMesssages().size()); } catch (Exception e) { throw e; }