first message shown twice for new user issue solved

This commit is contained in:
lucio.lelii 2021-10-13 13:48:37 +02:00
parent 08f0160d8d
commit 7f88e20a88
1 changed files with 20 additions and 17 deletions

View File

@ -87,7 +87,7 @@ public class MessageManager extends Impersonable{
@Inject Item2NodeConverter item2Node; @Inject Item2NodeConverter item2Node;
@Inject TrashHandler trashHandler; @Inject TrashHandler trashHandler;
@GET @GET
@Path("{id}") @Path("{id}")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@ -127,7 +127,7 @@ public class MessageManager extends Impersonable{
Node messageNode = ses.getNodeByIdentifier(id); Node messageNode = ses.getNodeByIdentifier(id);
Message message = node2Item.getMessageItem(messageNode); Message message = node2Item.getMessageItem(messageNode);
Node personalNode = checkRights(currentUser, message); Node personalNode = checkRights(currentUser, message);
if (countSharedSet(messageNode)>1) if (countSharedSet(messageNode)>1)
personalNode.removeShare(); personalNode.removeShare();
else { else {
@ -279,7 +279,7 @@ public class MessageManager extends Impersonable{
throw new InvalidCallParameters(); throw new InvalidCallParameters();
log.debug("attachments send are {}",attachments); log.debug("attachments send are {}",attachments);
ses = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); ses = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context));
Message message = new MessageSharable(); Message message = new MessageSharable();
@ -323,11 +323,11 @@ public class MessageManager extends Impersonable{
return messageId; return messageId;
} }
private Node saveAttachments(Session ses, Node messageNode , List<String> attachments) throws RepositoryException, BackendGenericError{ private Node saveAttachments(Session ses, Node messageNode , List<String> attachments) throws RepositoryException, BackendGenericError{
Node attachmentNode = messageNode.getNode(Constants.ATTACHMENTNODE_NAME); Node attachmentNode = messageNode.getNode(Constants.ATTACHMENTNODE_NAME);
for (String itemId: attachments) { for (String itemId: attachments) {
Node node = ses.getNodeByIdentifier(itemId); Node node = ses.getNodeByIdentifier(itemId);
Item item = node2Item.getItem(node, Excludes.GET_ONLY_CONTENT); Item item = node2Item.getItem(node, Excludes.GET_ONLY_CONTENT);
@ -351,7 +351,7 @@ public class MessageManager extends Impersonable{
log.info("message discarded"); log.info("message discarded");
continue; continue;
} }
if (reduceBody != null && reduceBody>0 && message.getBody().length()>reduceBody ) if (reduceBody != null && reduceBody>0 && message.getBody().length()>reduceBody )
message.setBody(message.getBody().substring(0, reduceBody)); message.setBody(message.getBody().substring(0, reduceBody));
insertOrdered(messages, message); insertOrdered(messages, message);
@ -360,12 +360,15 @@ public class MessageManager extends Impersonable{
} }
private void insertOrdered(List<Message> messages, Message toInsert) { private void insertOrdered(List<Message> messages, Message toInsert) {
if (messages.isEmpty()) messages.add(toInsert); if (messages.isEmpty())
int i; messages.add(toInsert);
for ( i=0 ; i<messages.size(); i++) else {
if (messages.get(i).getCreationTime().getTimeInMillis()<=toInsert.getCreationTime().getTimeInMillis()) int i;
break; for ( i=0 ; i<messages.size(); i++)
messages.add(i, toInsert); if (messages.get(i).getCreationTime().getTimeInMillis()<=toInsert.getCreationTime().getTimeInMillis())
break;
messages.add(i, toInsert);
}
} }
@ -373,8 +376,8 @@ public class MessageManager extends Impersonable{
Node personalNode = null; Node personalNode = null;
Node messageNode = (Node) messageItem.getRelatedNode(); Node messageNode = (Node) messageItem.getRelatedNode();
if (messageNode.getPath().startsWith(pathUtil.getWorkspacePath(currentUser).toPath())) if (messageNode.getPath().startsWith(pathUtil.getWorkspacePath(currentUser).toPath()))
return messageNode; return messageNode;
NodeIterator nodeIt = messageNode.getSharedSet(); NodeIterator nodeIt = messageNode.getSharedSet();
while (nodeIt.hasNext()) { while (nodeIt.hasNext()) {
Node node = nodeIt.nextNode(); Node node = nodeIt.nextNode();
@ -397,7 +400,7 @@ public class MessageManager extends Impersonable{
String newPath= String.format("%s/%s", destination.getPath(), uniqueName); String newPath= String.format("%s/%s", destination.getPath(), uniqueName);
session.getWorkspace().copy(nodeToCopy.getPath(), newPath); session.getWorkspace().copy(nodeToCopy.getPath(), newPath);
Node newNode = session.getNode(newPath); Node newNode = session.getNode(newPath);
if (itemToCopy instanceof AbstractFileItem) { if (itemToCopy instanceof AbstractFileItem) {
AbstractFileItem newNodeItem = node2Item.getItem(newNode, Excludes.EXCLUDE_ACCOUNTING); AbstractFileItem newNodeItem = node2Item.getItem(newNode, Excludes.EXCLUDE_ACCOUNTING);
newNodeItem.getContent().setRemotePath(newPath); newNodeItem.getContent().setRemotePath(newPath);
@ -412,7 +415,7 @@ public class MessageManager extends Impersonable{
newNode.setProperty(NodeProperty.TITLE.toString(), uniqueName); newNode.setProperty(NodeProperty.TITLE.toString(), uniqueName);
return newNode; return newNode;
} }
private int countSharedSet(Node node) throws RepositoryException{ private int countSharedSet(Node node) throws RepositoryException{
int count =0; int count =0;
NodeIterator it = node.getSharedSet(); NodeIterator it = node.getSharedSet();