// messages.
boolean updateFolder = false;
final Session session = Session.getDefaultInstance(props);
session.setDebug(isDebug());
final Store store = session.getStore(transport);
store.connect(getLogin(request), getPassword(request));
final POP3Folder inbox = (POP3Folder) store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
final FetchProfile profile = new FetchProfile();
profile.add(UIDFolder.FetchProfileItem.UID);
final Message[] messages = inbox.getMessages();
inbox.fetch(messages, profile);
if ((path == null) || path.equals("") || path.equals("/")) {
if (Method.GET.equals(request.getMethod())
|| Method.HEAD.equals(request.getMethod())) {
// Set the result document
response.setEntity(createRepresentation(messages, inbox));
} else {
response.setStatus(Status.CLIENT_ERROR_METHOD_NOT_ALLOWED);
response.getAllowedMethods().add(Method.GET);
response.getAllowedMethods().add(Method.HEAD);
}
} else if (path.startsWith("/")) {
// Retrieve the specified message
final String mailUid = path.substring(1);
Message message = null;
for (int i = 0; (message == null) && (i < messages.length); i++) {
final String uid = inbox.getUID(messages[i]);
if (mailUid.equals(uid)) {
message = messages[i];
}
}
if (message == null) {
// Message not found
response.setStatus(Status.CLIENT_ERROR_NOT_FOUND,
"No message matches the given UID: " + mailUid);
} else {
if (Method.GET.equals(request.getMethod())
|| Method.HEAD.equals(request.getMethod())) {
// Set the result document
response.setEntity(createRepresentation(message));
} else if (Method.DELETE.equals(request.getMethod())) {
message.setFlag(Flags.Flag.DELETED, true);
updateFolder = true;
} else {
response.setStatus(Status.CLIENT_ERROR_METHOD_NOT_ALLOWED);
response.getAllowedMethods().add(Method.GET);
response.getAllowedMethods().add(Method.HEAD);
response.getAllowedMethods().add(Method.DELETE);
}
}
}
inbox.close(updateFolder);
store.close();
}