Replaces print statements by logger calls

Closes #34
This commit is contained in:
Kai S. K. Engelbart 2020-06-11 12:06:06 +02:00
parent 7e14bb5cd8
commit d6e4c54b75
9 changed files with 56 additions and 27 deletions

View File

@ -40,7 +40,7 @@ public class Startup {
items.put("homeDirectory",
new ConfigItem<>("homeDirectory", "h", File::new, new File(System.getProperty("user.home"), ".envoy-server"), true));
items.put("fileLevelBarrier", new ConfigItem<>("fileLevelBarrier", "fb", Level::parse, Level.SEVERE, true));
items.put("consoleLevelBarrier", new ConfigItem<>("consoleLevelBarrier", "cb", Level::parse, Level.INFO, true));
items.put("consoleLevelBarrier", new ConfigItem<>("consoleLevelBarrier", "cb", Level::parse, Level.FINE, true));
final var config = new Config();
config.load(items);

View File

@ -4,12 +4,14 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Set;
import java.util.logging.Logger;
import com.jenkov.nioserver.IMessageProcessor;
import com.jenkov.nioserver.Message;
import com.jenkov.nioserver.WriteProxy;
import envoy.server.processors.ObjectProcessor;
import envoy.util.EnvoyLog;
/**
* Handles incoming objects.<br>
@ -25,6 +27,8 @@ public class ObjectMessageProcessor implements IMessageProcessor {
private final Set<ObjectProcessor<?>> processors;
private static final Logger logger = EnvoyLog.getLogger(ObjectMessageProcessor.class);
/**
* The constructor to set the {@link ObjectProcessor}s.
*
@ -39,11 +43,11 @@ public class ObjectMessageProcessor implements IMessageProcessor {
try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(message.sharedArray, message.offset + 4, message.length - 4))) {
Object obj = in.readObject();
if (obj == null) {
System.out.println("received a null object");
logger.warning("Received a null object");
return;
}
System.out.println("Read object: " + obj);
logger.fine("Received " + obj);
// Process object
processors.stream().filter(p -> p.getInputClass().isInstance(obj)).forEach((@SuppressWarnings("rawtypes") ObjectProcessor p) -> {

View File

@ -1,10 +1,12 @@
package envoy.server.net;
import java.io.IOException;
import java.util.logging.Logger;
import com.jenkov.nioserver.Message;
import com.jenkov.nioserver.WriteProxy;
import envoy.util.EnvoyLog;
import envoy.util.SerializationUtils;
/**
@ -21,6 +23,8 @@ public class ObjectWriteProxy {
private final WriteProxy writeProxy;
private static final Logger logger = EnvoyLog.getLogger(ObjectWriteProxy.class);
/**
* Creates an instance of {@link ObjectWriteProxy}.
*
@ -40,7 +44,7 @@ public class ObjectWriteProxy {
final Message response = writeProxy.getMessage();
response.socketId = recipientSocketID;
System.out.println("Sending object " + obj);
logger.fine("Sending " + obj);
// Serialize object to byte array
final byte[] objBytes = SerializationUtils.writeToByteArray(obj);

View File

@ -1,12 +1,14 @@
package envoy.server.processors;
import java.io.IOException;
import java.util.logging.Logger;
import envoy.event.ElementOperation;
import envoy.event.contact.ContactOperationEvent;
import envoy.server.data.PersistenceManager;
import envoy.server.net.ConnectionManager;
import envoy.server.net.ObjectWriteProxy;
import envoy.util.EnvoyLog;
/**
* Project: <strong>envoy-server-standalone</strong><br>
@ -19,6 +21,7 @@ import envoy.server.net.ObjectWriteProxy;
public class ContactOperationProcessor implements ObjectProcessor<ContactOperationEvent> {
private static final ConnectionManager connectionManager = ConnectionManager.getInstance();
private static final Logger logger = EnvoyLog.getLogger(ContactOperationProcessor.class);
@Override
public void process(ContactOperationEvent evt, long socketId, ObjectWriteProxy writeProxy) throws IOException {
@ -27,7 +30,7 @@ public class ContactOperationProcessor implements ObjectProcessor<ContactOperati
final long userID = ConnectionManager.getInstance().getUserIdBySocketId(socketId);
final long contactId = evt.get().getID();
System.out.printf("Adding user %s to the contact list of user %d.%n", evt.get(), userID);
logger.fine(String.format("Adding user %s to the contact list of user %d.%n", evt.get(), userID));
PersistenceManager.getInstance().addUserContact(userID, contactId);
// Notify the contact if online
@ -36,7 +39,7 @@ public class ContactOperationProcessor implements ObjectProcessor<ContactOperati
new ContactOperationEvent(PersistenceManager.getInstance().getUserByID(userID).toCommon(), ElementOperation.ADD));
break;
default:
System.err.printf("Received %s with an unsupported operation.%n", evt);
logger.warning(String.format("Received %s with an unsupported operation.%n", evt));
}
}

View File

@ -2,6 +2,7 @@ package envoy.server.processors;
import java.io.IOException;
import java.util.Date;
import java.util.logging.Logger;
import javax.persistence.EntityExistsException;
@ -11,6 +12,7 @@ import envoy.event.MessageStatusChangeEvent;
import envoy.server.data.PersistenceManager;
import envoy.server.net.ConnectionManager;
import envoy.server.net.ObjectWriteProxy;
import envoy.util.EnvoyLog;
/**
* Project: <strong>envoy-server-standalone</strong><br>
@ -22,6 +24,8 @@ import envoy.server.net.ObjectWriteProxy;
*/
public class GroupMessageProcessor implements ObjectProcessor<GroupMessage> {
private static final Logger logger = EnvoyLog.getLogger(GroupCreationProcessor.class);
@Override
public void process(GroupMessage groupMessage, long socketID, ObjectWriteProxy writeProxy) {
groupMessage.nextStatus();
@ -29,7 +33,7 @@ public class GroupMessageProcessor implements ObjectProcessor<GroupMessage> {
try {
writeProxy.write(socketID, new MessageStatusChangeEvent(groupMessage));
} catch (IOException e) {
System.err.println("Could not send messageStatusChangeEvent to the sender of this groupMessage with ID: " + groupMessage.getID());
logger.warning("Could not send messageStatusChangeEvent to the sender of this groupMessage with ID: " + groupMessage.getID());
e.printStackTrace();
}
@ -48,7 +52,7 @@ public class GroupMessageProcessor implements ObjectProcessor<GroupMessage> {
try {
PersistenceManager.getInstance().addMessage(new envoy.server.data.GroupMessage(groupMessage, new Date()));
} catch (EntityExistsException e) {
System.err.println("Received a groupMessage with an ID that already exists");
logger.warning("Received a groupMessage with an ID that already exists");
}
}
@ -57,7 +61,7 @@ public class GroupMessageProcessor implements ObjectProcessor<GroupMessage> {
// If recipient is online, send the groupMessage directly
writeProxy.write(connectionManager.getSocketId(memberID), groupMessage);
} catch (IOException e) {
System.err.println("Recipient online. Failed to send message" + groupMessage.getID());
logger.warning("Recipient online. Failed to send message" + groupMessage.getID());
e.printStackTrace();
}
}

View File

@ -1,12 +1,14 @@
package envoy.server.processors;
import java.io.IOException;
import java.util.logging.Logger;
import envoy.data.IDGenerator;
import envoy.event.IDGeneratorRequest;
import envoy.server.data.ConfigItem;
import envoy.server.data.PersistenceManager;
import envoy.server.net.ObjectWriteProxy;
import envoy.util.EnvoyLog;
/**
* Project: <strong>envoy-server-standalone</strong><br>
@ -20,15 +22,16 @@ import envoy.server.net.ObjectWriteProxy;
public class IDGeneratorRequestProcessor implements ObjectProcessor<IDGeneratorRequest> {
private static final long ID_RANGE = 200;
private static final Logger logger = EnvoyLog.getLogger(IDGeneratorRequestProcessor.class);
@Override
public Class<IDGeneratorRequest> getInputClass() { return IDGeneratorRequest.class; }
@Override
public void process(IDGeneratorRequest input, long socketID, ObjectWriteProxy writeProxy) throws IOException {
System.out.println("Received id generation request.");
logger.fine("Received id generation request.");
var generator = createIDGenerator();
System.out.println("Sending new id generator " + generator);
logger.info("Sending new id generator " + generator);
writeProxy.write(socketID, generator);
}

View File

@ -2,6 +2,7 @@ package envoy.server.processors;
import java.io.IOException;
import java.util.*;
import java.util.logging.Logger;
import javax.persistence.NoResultException;
@ -15,6 +16,7 @@ import envoy.server.data.Message;
import envoy.server.data.PersistenceManager;
import envoy.server.net.ConnectionManager;
import envoy.server.net.ObjectWriteProxy;
import envoy.util.EnvoyLog;
/**
* This {@link ObjectProcessor} handles {@link LoginCredentials}.<br>
@ -32,16 +34,18 @@ public class LoginCredentialProcessor implements ObjectProcessor<LoginCredential
private final PersistenceManager persistenceManager = PersistenceManager.getInstance();
private final ConnectionManager connectionManager = ConnectionManager.getInstance();
private static final Logger logger = EnvoyLog.getLogger(LoginCredentialProcessor.class);
@Override
public void process(LoginCredentials input, long socketID, ObjectWriteProxy writeProxy) throws IOException {
UserStatusChangeProcessor.setWriteProxy(writeProxy);
System.out.println(String.format("Received login credentials %s from socket ID %d", input, socketID));
logger.info(String.format("Received login credentials %s from socket ID %d", input, socketID));
envoy.server.data.User user = getUser(input, socketID, writeProxy);
// Not logged in successfully
if (user == null) {
System.out.println("Rejecting handshake on socket " + socketID);
logger.info("Rejecting handshake on socket " + socketID);
return;
}
connectionManager.registerUser(user.getID(), socketID);
@ -52,25 +56,25 @@ public class LoginCredentialProcessor implements ObjectProcessor<LoginCredential
UserStatusChangeProcessor.updateUserStatus(user);
// Complete handshake
System.out.println("Sending user...");
logger.fine("Sending user...");
writeProxy.write(socketID, user.toCommon());
System.out.println("Acquiring pending messages for the client...");
logger.fine("Acquiring pending messages for the client...");
List<Message> pendingMessages = PersistenceManager.getInstance().getPendingMessages(user);
for (Message msg : pendingMessages)
if (msg.getStatus() == MessageStatus.SENT) {
System.out.println("Sending message " + msg.toCommon());
logger.info("Sending message " + msg.toCommon());
writeProxy.write(socketID, msg.toCommon());
msg.setReceivedDate(new Date());
msg.setStatus(MessageStatus.RECEIVED);
if (connectionManager.isOnline(msg.getSender().getID())) {
var evt = new MessageStatusChangeEvent(msg.toCommon());
System.out.println("Sending messageStatusChangeEvent to sender " + evt);
logger.info("Sending messageStatusChangeEvent to sender " + evt);
writeProxy.write(connectionManager.getSocketId(msg.getSender().getID()), evt);
}
PersistenceManager.getInstance().updateMessage(msg);
} else {
var evt = new MessageStatusChangeEvent(msg.toCommon());
System.out.println("Sending messageStatusChangeEvent " + evt);
logger.info("Sending messageStatusChangeEvent " + evt);
writeProxy.write(socketID, evt);
}
}

View File

@ -2,6 +2,7 @@ package envoy.server.processors;
import java.io.IOException;
import java.util.Date;
import java.util.logging.Logger;
import javax.persistence.EntityExistsException;
@ -11,6 +12,7 @@ import envoy.event.MessageStatusChangeEvent;
import envoy.server.data.PersistenceManager;
import envoy.server.net.ConnectionManager;
import envoy.server.net.ObjectWriteProxy;
import envoy.util.EnvoyLog;
/**
* This {@link ObjectProcessor} handles incoming {@link Message}s.<br>
@ -25,6 +27,8 @@ import envoy.server.net.ObjectWriteProxy;
*/
public class MessageProcessor implements ObjectProcessor<Message> {
private static final Logger logger = EnvoyLog.getLogger(MessageProcessor.class);
@Override
public void process(Message message, long socketID, ObjectWriteProxy writeProxy) {
message.nextStatus();
@ -36,14 +40,14 @@ public class MessageProcessor implements ObjectProcessor<Message> {
try {
writeProxy.write(socketID, new MessageStatusChangeEvent(message));
} catch (IOException e) {
System.err.println("Could not send messageStatusChangeEvent to the sender of this message with ID: " + message.getID());
logger.warning("Could not send messageStatusChangeEvent to the sender of this message with ID: " + message.getID());
e.printStackTrace();
}
}
try {
PersistenceManager.getInstance().addMessage(new envoy.server.data.Message(message));
} catch (EntityExistsException e) {
System.err.println("Received a message with an id that already exists");
logger.warning("Received a message with an id that already exists");
}
}
@ -54,9 +58,8 @@ public class MessageProcessor implements ObjectProcessor<Message> {
// Update the message status to RECEIVED
message.setReceivedDate(new Date());
message.nextStatus();
} catch (IOException e) {
System.err.println("Recipient online. Failed to send message" + message.getID());
logger.warning("Recipient online. Failed to send message" + message.getID());
e.printStackTrace();
}
}

View File

@ -1,6 +1,7 @@
package envoy.server.processors;
import java.io.IOException;
import java.util.logging.Logger;
import envoy.data.User.UserStatus;
import envoy.event.UserStatusChangeEvent;
@ -8,6 +9,7 @@ import envoy.server.data.PersistenceManager;
import envoy.server.data.User;
import envoy.server.net.ConnectionManager;
import envoy.server.net.ObjectWriteProxy;
import envoy.util.EnvoyLog;
/**
* This processor handles incoming {@link UserStatusChangeEvent}.<br>
@ -24,6 +26,8 @@ public class UserStatusChangeProcessor implements ObjectProcessor<UserStatusChan
private static ObjectWriteProxy writeProxy;
private static PersistenceManager persistenceManager = PersistenceManager.getInstance();
private static final Logger logger = EnvoyLog.getLogger(UserStatusChangeProcessor.class);
@Override
public Class<UserStatusChangeEvent> getInputClass() { return UserStatusChangeEvent.class; }
@ -31,11 +35,10 @@ public class UserStatusChangeProcessor implements ObjectProcessor<UserStatusChan
public void process(UserStatusChangeEvent input, long socketID, ObjectWriteProxy writeProxy) throws IOException {
// new status should not equal old status
if (input.get().equals(persistenceManager.getUserByID(input.getID()).getStatus())) {
System.out.println("Received an unnecessary UserStatusChangeEvent");
logger.warning("Received an unnecessary UserStatusChangeEvent");
return;
}
updateUserStatus(input);
}
/**
@ -47,10 +50,11 @@ public class UserStatusChangeProcessor implements ObjectProcessor<UserStatusChan
*/
public static void updateUserStatus(User user) {
// handling for newly logged in clients
// Handling for newly logged in clients
persistenceManager.updateContact(user);
// handling for contacts that are already online
// Handling for contacts that are already online
notifyContacts(user);
}
@ -75,7 +79,7 @@ public class UserStatusChangeProcessor implements ObjectProcessor<UserStatusChan
if (connectionManager.isOnline(contact.getID())) writeProxy.write(connectionManager.getSocketId(contact.getID()), evt);
} catch (IOException e) {
e.printStackTrace();
System.err.println("Could not notify online contacts of user " + evt.getID() + " that his status has been changed");
logger.warning("Could not notify online contacts of user " + evt.getID() + " that his status has been changed");
}
}