Skip to content

Commit e8f8554

Browse files
author
Reza Rahman
committed
Handling validation on client side.
1 parent d54525e commit e8f8554

File tree

10 files changed

+70
-34
lines changed

10 files changed

+70
-34
lines changed

javaee-javascript-main/pom.xml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,20 @@
6363
<version>7.0</version>
6464
<scope>provided</scope>
6565
</dependency>
66+
<dependency>
67+
<groupId>org.glassfish.jersey.containers</groupId>
68+
<artifactId>jersey-container-servlet-core</artifactId>
69+
<version>2.0</version>
70+
<type>jar</type>
71+
<scope>provided</scope>
72+
</dependency>
6673
<dependency>
6774
<groupId>org.glassfish.jersey.media</groupId>
6875
<artifactId>jersey-media-moxy</artifactId>
6976
<version>2.2</version>
7077
<type>jar</type>
7178
<scope>provided</scope>
72-
</dependency>
79+
</dependency>
7380
</dependencies>
7481

7582
<build>

javaee-javascript-main/src/main/java/org/glassfish/javaee/javascript/backend/chat/ChatMessage.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ public class ChatMessage
5555
implements Decoder.Text<ChatMessage>, Encoder.Text<ChatMessage> {
5656

5757
@NotNull
58-
@Size(min = 1, max = 42,
59-
message = "User must be between 1 and 42 characters")
58+
@Size(min = 4, max = 14,
59+
message = "User name must be between 4 and 14 characters.")
6060
private String user;
6161
@NotNull
62-
@Size(min = 1, max = 255,
63-
message = "Message must be between 1 and 255 characters")
62+
@Size(min = 2, max = 255,
63+
message = "Message must be between 2 and 255 characters.")
6464
private String message;
6565

6666
@Override

javaee-javascript-main/src/main/java/org/glassfish/javaee/javascript/backend/chat/ChatServer.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@
6262
@Singleton
6363
public class ChatServer {
6464

65-
/**
66-
* Logger
67-
*/
6865
private static final Logger logger = Logger
6966
.getLogger(ChatServer.class.getName());
7067

javaee-javascript-main/src/main/java/org/glassfish/javaee/javascript/backend/todo/DefaultToDoService.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@
4949
@Stateless
5050
public class DefaultToDoService implements ToDoService {
5151

52-
/**
53-
* Logger
54-
*/
5552
private static final Logger logger = Logger
5653
.getLogger(DefaultToDoService.class.getName());
5754

javaee-javascript-main/src/main/java/org/glassfish/javaee/javascript/backend/todo/RestConfiguration.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,13 @@
3939
*/
4040
package org.glassfish.javaee.javascript.backend.todo;
4141

42+
import java.util.HashMap;
4243
import java.util.HashSet;
44+
import java.util.Map;
4345
import java.util.Set;
4446
import javax.ws.rs.ApplicationPath;
4547
import javax.ws.rs.core.Application;
48+
import org.glassfish.jersey.server.ServerProperties;
4649

4750
@ApplicationPath("resources")
4851
public class RestConfiguration extends Application {
@@ -54,8 +57,15 @@ public Set<Class<?>> getClasses() {
5457
return resources;
5558
}
5659

60+
@Override
61+
public Map<String, Object> getProperties() {
62+
Map<String, Object> properties = new HashMap();
63+
properties.put(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true);
64+
return properties;
65+
}
66+
5767
private void addRestResourceClasses(Set<Class<?>> resources) {
5868
resources.add(org.glassfish.javaee.javascript.backend.todo.JsonMoxyConfigurationContextResolver.class);
5969
resources.add(org.glassfish.javaee.javascript.backend.todo.ToDoResource.class);
6070
}
61-
}
71+
}

javaee-javascript-main/src/main/java/org/glassfish/javaee/javascript/backend/todo/ToDoItem.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,16 @@
5959
public class ToDoItem implements Serializable {
6060

6161
private static final long serialVersionUID = 1L;
62+
6263
@Id
6364
@GeneratedValue
6465
private Long id;
6566

6667
private String username;
6768

6869
@NotNull
69-
@Size(min = 5, max = 110)
70+
@Size(min = 5, max = 110,
71+
message = "Item description must be between 5 and 110 characters.")
7072
private String description;
7173

7274
private boolean completed;

javaee-javascript-main/src/main/java/org/glassfish/javaee/javascript/backend/todo/ToDoResource.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public class ToDoResource implements Serializable {
7171
public ToDoItem create(
7272
@PathParam("username")
7373
@NotNull
74-
@Size(min = 4, max = 14) String username,
74+
@Size(min = 4, max = 14, message = "User name must be between 4 and 14 characters.") String username,
7575
@Valid ToDoItem item) {
7676
return service.addToDoItem(username, item);
7777
}
@@ -82,7 +82,7 @@ public ToDoItem create(
8282
public void edit(
8383
@PathParam("username")
8484
@NotNull
85-
@Size(min = 4, max = 14) String username,
85+
@Size(min = 4, max = 14, message = "User name must be between 4 and 14 characters.") String username,
8686
@PathParam("id") Long id,
8787
@Valid ToDoItem item) {
8888
item.setId(id);
@@ -94,7 +94,7 @@ public void edit(
9494
public void remove(
9595
@PathParam("username")
9696
@NotNull
97-
@Size(min = 4, max = 14) String username,
97+
@Size(min = 4, max = 14, message = "User name must be between 4 and 14 characters.") String username,
9898
@PathParam("id") Long id) {
9999
service.removeToDoItem(username, id);
100100
}
@@ -104,7 +104,7 @@ public void remove(
104104
public List<ToDoItem> getAll(
105105
@PathParam("username")
106106
@NotNull
107-
@Size(min = 4, max = 14) String username) {
107+
@Size(min = 4, max = 14, message = "User name must be between 4 and 14 characters.") String username) {
108108
return service.findToDoItemsByUsername(username);
109109
}
110110
}

javaee-javascript-main/src/main/webapp/javascript/chat/controllers.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,20 @@
22

33
var chatControllers = angular.module('chatControllers', []);
44

5-
chatControllers.controller('ChatController', ['$scope', 'Chat',
6-
function($scope, Chat) {
5+
chatControllers.controller('ChatController', ['$scope', '$window', 'Chat',
6+
function($scope, $window, Chat) {
77
$scope.user = principal;
88
$scope.messages = [];
99
$scope.newMessage = '';
1010

11-
Chat.setListener(function(message) {
12-
$scope.messages.push(message);
13-
$scope.$apply();
14-
});
11+
Chat.setListener(
12+
function(message) {
13+
$scope.messages.push(message);
14+
$scope.$apply();
15+
},
16+
function(error) {
17+
$window.alert(error);
18+
});
1519

1620
$scope.send = function() {
1721
Chat.send(principal, $scope.newMessage);

javaee-javascript-main/src/main/webapp/javascript/chat/services.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@ chatServices.factory('Chat', [function() {
88
this.send = function(sender, value) {
99
websocket.send(JSON.stringify({user: sender, message: value}));
1010
};
11-
this.setListener = function(listener) {
11+
this.setListener = function(messageListener, errorListener) {
1212
websocket.onmessage = function(message) {
13-
listener(JSON.parse(message.data));
13+
var parsedMessage = JSON.parse(message.data);
14+
15+
if (!parsedMessage.error) {
16+
messageListener(parsedMessage);
17+
} else {
18+
errorListener(parsedMessage.error);
19+
}
1420
};
1521
};
1622
};

javaee-javascript-main/src/main/webapp/javascript/todo/controllers.js

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
'use strict';
1+
'use strict';
22

33
var todoControllers = angular.module('todoControllers', []);
44

5-
todoControllers.controller('ToDoController', ['$scope', 'ToDo',
6-
function($scope, ToDo) {
5+
todoControllers.controller('ToDoController', ['$scope', '$window', 'ToDo',
6+
function($scope, $window, ToDo) {
77
$scope.user = principal;
88
$scope.newToDoDescription = '';
99
$scope.itemToEdit = null;
@@ -12,10 +12,16 @@ todoControllers.controller('ToDoController', ['$scope', 'ToDo',
1212

1313
$scope.addItem = function() {
1414
var item = new ToDo({description: $scope.newToDoDescription});
15-
item.$save(function(data) {
16-
$scope.items.push(data);
17-
});
18-
$scope.newToDoDescription = '';
15+
item.$save(
16+
function(data) {
17+
// Success.
18+
$scope.items.push(data);
19+
$scope.newToDoDescription = '';
20+
},
21+
function(error) {
22+
// Error.
23+
$window.alert(error.data.pop().message);
24+
});
1925
};
2026

2127
$scope.editItem = function(item) {
@@ -24,8 +30,15 @@ todoControllers.controller('ToDoController', ['$scope', 'ToDo',
2430
};
2531

2632
$scope.commitEditItem = function(item) {
27-
ToDo.update(item);
28-
$scope.itemToEdit = null;
33+
item.$update(
34+
function() {
35+
// Success.
36+
$scope.itemToEdit = null;
37+
},
38+
function(error) {
39+
// Error.
40+
$window.alert(error.data.pop().message);
41+
});
2942
};
3043

3144
$scope.revertEditing = function(item) {

0 commit comments

Comments
 (0)