Всем доброго времени суток!
Пишу мессенджер в качестве дипломной работы на Java EE.
На сервере есть модель ChatRoom
public class ChatRoom {
private long id;
private String name;
private Map<String, Session> clients;
private List<User> members;
MessageEncoder encoder;
OnlineUsersStorage onlineUsersStorage = OnlineUsersStorage.getInstance();
public ChatRoom(long id, String name, List<User> members) {
clients = new HashMap<>();
encoder = new MessageEncoder();
this.id = id;
this.name = name;
this.members = members;
}
//Setters
public void setId(long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setMembers(List<User> members) {
this.members = members;
}
public void setClients(Map<String, Session> clients) {
this.clients = clients;
}
//Getters
public long getId() {
return id;
}
public String getName() {
return name;
}
public List<User> getMembers() {
return members;
}
public Map<String, Session> getClients() {
return clients;
}
//Methods
public void sendMessage(Message message){
try {
String encodedMessage = encoder.encode(message);
List<Session> sessions = onlineUsersStorage.getUserSession(members);
for (Session s : sessions) s.getBasicRemote().sendText(encodedMessage);
}catch (IOException | EncodeException e){
e.printStackTrace();
}
}
}
И на клиенте есть тоже ChatRoom
public class ChatRoom {
private long id;
private String name;
private List<User> members;
private List<Message> messages;
public ChatRoom(long id, String name, List<User> members, List<Message> messages) {
this.id = id;
this.name = name;
this.members = members;
this.messages = messages;
}
//Getters
public long getId() {
return id;
}
public String getName() {
return name;
}
public List<User> getMembers() {
return members;
}
public List<Message> getMessages() {
return messages;
}
//Setters
public void setId(long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setMembers(List<User> members) {
this.members = members;
}
public void setMessages(List<Message> messages) {
this.messages = messages;
}
//Methods
public Message getLastMessage(){
return messages.isEmpty() ? null : messages.get(messages.size() - 1);
}
}
Беда в том, что они имеют разную реализацию.
Клиенту ведь не нужно никаких полей типа
Map<String, Session> clients;
MessageEncoder encoder;
OnlineUsersStorage onlineUsersStorage
А серверу не нужно иметь внутри ChatRoom
List<Message> messages;
Клиент в процессе работы программы шлёт запрос на сервер с просьбой предоставить ему ArrayList с объектами ChatRooms клиента.
Как на сервере можно реализовать это? Плодить два вида моделей ChatRoom аля ClientChatRoom/ServerChatRoom на сервере кажется глупым решением.