List of usage examples for org.apache.commons.io FileUtils touch
public static void touch(File file) throws IOException
From source file:org.sipfoundry.sipxconfig.upload.ZipUploadTest.java
public void testDeployUndeployExcludes() throws Exception { FileSetting type = new FileSetting(); // This should do nothing, since it doesn't match any paths. type.addZipExclude("zip"); // An individual file excluded. type.addZipExclude("zip-test/file3.bin"); // An entire directory excluded. type.addZipExclude("zip-test/subdir"); // Intentionally no trailing separator. // All the files and directories from the zip archive. File dir1 = new File(m_expandDir, "zip-test"); File dir2 = new File(m_expandDir, "zip-test/subdir"); File file1 = new File(m_expandDir, "zip-test/subdir/file1.txt"); File file2 = new File(m_expandDir, "zip-test/file2.txt"); File file3 = new File(m_expandDir, "zip-test/file3.bin"); // Some should exist, and some should not. Upload.deployZipFile(m_expandDir, m_zipFile, type); assertTrue(dir1.exists());/*from ww w. java 2 s. c o m*/ assertTrue(!dir2.exists()); assertTrue(!file1.exists()); assertTrue(file2.exists()); assertTrue(!file3.exists()); // Now manually create this file that was excluded, to show that an undeploy // will not destroy it. FileUtils.touch(file3); // Some should exist, and some should not. Upload.undeployZipFile(m_expandDir, m_zipFile, type); assertTrue(dir1.exists()); // do not clean up directory, no guarantee we created them assertTrue(!dir2.exists()); assertTrue(!file1.exists()); assertTrue(!file2.exists()); assertTrue(file3.exists()); }
From source file:org.sipfoundry.voicemail.mailbox.FilesystemMailboxManager.java
@Override protected VmMessage saveTempMessageInStorage(User destUser, TempMessage message, MessageDescriptor descriptor, Folder storageFolder, String messageId) { File folderDir = getFolder(destUser.getUserName(), storageFolder); File audioFile = new File(folderDir, messageId + String.format(AUDIO_IDENTIFIER, getAudioFormat())); File descriptorFile = new File(folderDir, messageId + MESSAGE_IDENTIFIER); File statusFile = new File(folderDir, messageId + STATUS_IDENTIFIER); File urgentFile = new File(folderDir, messageId + URGENT_IDENTIFIER); String operation = "storing stuff"; boolean urgent = message.getPriority() == Priority.URGENT; try {//from w ww .j av a2s.c o m operation = "creating status file " + statusFile.getPath(); LOG.debug("FileSystemMailboxManager::newMessage " + operation); FileUtils.touch(statusFile); if (urgent) { operation = "creating urgent file " + urgentFile.getPath(); LOG.debug("FileSystemMailboxManager::newMessage " + operation); FileUtils.touch(urgentFile); } operation = "copying recording file to " + audioFile.getPath(); LOG.debug("VmMessage::newMessage " + operation); FileUtils.copyFile(new File(message.getTempPath()), audioFile, true); operation = "creating messageDescriptor " + descriptorFile.getPath(); LOG.debug("VmMessage::newMessage " + operation); m_descriptorWriter.writeObject(descriptor, descriptorFile); } catch (IOException e) { LOG.error("VmMessage::newMessage error while " + operation, e); return null; } if (storageFolder == Folder.INBOX) { m_mwi.sendMWI(destUser, getMailboxDetails(destUser.getUserName())); } LOG.info("VmMessage::newMessage created message " + descriptorFile.getPath()); return new VmMessage(messageId, audioFile, descriptor, urgent); }
From source file:org.sipfoundry.voicemail.mailbox.FilesystemMailboxManager.java
@Override protected VmMessage copyMessage(String newMessageId, User destUser, TempMessage message) { // destination files File destinationInbox = getFolder(destUser.getUserName(), Folder.INBOX); File destStatus = new File(destinationInbox, newMessageId + STATUS_IDENTIFIER); File destUrg = new File(destinationInbox, newMessageId + URGENT_IDENTIFIER); File destAudio = new File(destinationInbox, newMessageId + String.format(AUDIO_IDENTIFIER, getAudioFormat())); File destDescriptor = new File(destinationInbox, newMessageId + MESSAGE_IDENTIFIER); File originalDestAudio = new File(destinationInbox, newMessageId + String.format(ORIGINAL_AUDIO_IDENTIFIER, getAudioFormat())); File destCombined = new File(destinationInbox, newMessageId + String.format(FW_AUDIO_IDENTIFIER, getAudioFormat())); // original files File originalInbox = getFolder(message.getCurrentUser(), Folder.INBOX); FilenameFilter filter = new RegexFileFilter( String.format(MESSAGEID_FILE_REGEX, message.getSavedMessageId())); File[] originalFiles = originalInbox.listFiles(filter); boolean urgent = false; MessageDescriptor descriptor = null; String operation = "copying stuff"; try {// w w w . j ava 2 s. co m operation = "creating status file " + destStatus.getPath(); FileUtils.touch(destStatus); for (File originalFile : originalFiles) { if (originalFile.getName().endsWith(URGENT_IDENTIFIER)) { operation = "creating urgent file " + destUrg.getPath(); FileUtils.touch(destUrg); urgent = true; } else if (originalFile.getName().endsWith(String.format(AUDIO_IDENTIFIER, getAudioFormat()))) { operation = "copying audio file " + destAudio.getPath(); FileUtils.copyFile(originalFile, destAudio); } else if (originalFile.getName().endsWith(MESSAGE_IDENTIFIER)) { operation = "copying descriptor file " + destDescriptor.getPath(); descriptor = m_descriptorReader.readObject(originalFile); if (descriptor.getOtherRecipients() != null) { descriptor.addOtherRecipient(ValidUsers.getUserPart(descriptor.getId())); descriptor.removeOtherRecipient(destUser.getUserName()); } descriptor.setId(destUser.getIdentity()); descriptor.setSubject("Voice Message " + newMessageId); m_descriptorWriter.writeObject(descriptor, destDescriptor); } else if (originalFile.getName() .endsWith(String.format(ORIGINAL_AUDIO_IDENTIFIER, getAudioFormat()))) { operation = "copying original audio file " + originalDestAudio.getPath(); FileUtils.copyFile(originalFile, originalDestAudio); } else if (originalFile.getName().endsWith(String.format(FW_AUDIO_IDENTIFIER, getAudioFormat()))) { operation = "copying combined audio file " + destCombined.getPath(); FileUtils.copyFile(originalFile, destCombined); } } } catch (IOException e) { LOG.error("VmMessage::copy error while " + operation, e); return null; } m_mwi.sendMWI(destUser, getMailboxDetails(destUser.getUserName())); if (destCombined.exists()) { return new VmMessage(newMessageId, destCombined, descriptor, urgent); } else { return new VmMessage(newMessageId, destAudio, descriptor, urgent); } }
From source file:org.sipfoundry.voicemail.mailbox.FilesystemMailboxManager.java
@Override protected VmMessage forwardMessage(VmMessage originalMessage, TempMessage comments, MessageDescriptor descriptor, User destUser, String newMessageId) { boolean urgent = false; File destCombined = null;//from w ww . j av a2 s. c om try { // destination files File destinationInbox = getFolder(destUser.getUserName(), Folder.INBOX); File destStatus = new File(destinationInbox, newMessageId + STATUS_IDENTIFIER); File destAudio = new File(destinationInbox, newMessageId + String.format(AUDIO_IDENTIFIER, getAudioFormat())); File destUrg = new File(destinationInbox, newMessageId + URGENT_IDENTIFIER); File originalDestAudio = new File(destinationInbox, newMessageId + String.format(ORIGINAL_AUDIO_IDENTIFIER, getAudioFormat())); destCombined = new File(destinationInbox, newMessageId + String.format(FW_AUDIO_IDENTIFIER, getAudioFormat())); File originalDestDescriptor = new File(destinationInbox, newMessageId + ORIGINAL_MESSAGE_IDENTIFIER); File destDescriptor = new File(destinationInbox, newMessageId + MESSAGE_IDENTIFIER); FileUtils.touch(destStatus); if (comments.getTempPath() != null) { FileUtils.copyFile(new File(comments.getTempPath()), destAudio, true); } else { FileUtils.touch(destAudio); } // original files Folder originalFolder = originalMessage.getParentFolder(); FilenameFilter filterById = new FileFilterByMessageId(originalMessage.getMessageId()); File[] filesToForward = getFolder(originalMessage.getUserName(), originalFolder).listFiles(filterById); for (File fileToForward : filesToForward) { if (fileToForward.getName().endsWith(URGENT_IDENTIFIER)) { FileUtils.touch(destUrg); urgent = true; } else if (fileToForward.getName().endsWith(String.format(AUDIO_IDENTIFIER, getAudioFormat()))) { FileUtils.copyFile(fileToForward, originalDestAudio, true); if (comments.getTempPath() != null) { concatAudio(destCombined, destAudio, fileToForward); } else { FileUtils.copyFile(fileToForward, destCombined, true); } } else if (fileToForward.getName().endsWith(MESSAGE_IDENTIFIER)) { FileUtils.copyFile(fileToForward, originalDestDescriptor, true); } } m_descriptorWriter.writeObject(descriptor, destDescriptor); m_mwi.sendMWI(destUser, getMailboxDetails(destUser.getUserName())); } catch (Exception ex) { LOG.error("Failed to forward message", ex); return null; } return new VmMessage(newMessageId, destCombined, descriptor, urgent); }
From source file:org.sipfoundry.voicemail.mailbox.FilesystemMailboxManager.java
@Override public void markMessageUnheard(User user, String messageId) { FilenameFilter filter = new FileFilterByMessageId(messageId); File[] files = findFilesInInbox(user.getUserName(), filter); try {/*from w w w. j av a2 s . c om*/ for (File file : files) { File statusFile = new File(file.getParentFile(), messageId + STATUS_IDENTIFIER); FileUtils.touch(statusFile); m_mwi.sendMWI(user, getMailboxDetails(user.getUserName())); break; } } catch (IOException ex) { LOG.error(String.format("failed to mark message %s unheard for user %s", messageId, user.getUserName()), ex); } }
From source file:org.sipfoundry.voicemail.MessagesTest.java
public void testLoadFolder() throws IOException, InterruptedException { Messages m = new Messages(); m.loadFolder(m_inboxDir, m.m_inbox, true, null); assertEquals(0, m.getInboxCount());/*from w ww. j a v a2 s . c om*/ FileUtils.touch(new File(m_inboxDir, "0001-00.wav")); makeMd(new File(m_inboxDir, "0001-00.xml")); FileUtils.touch(new File(m_inboxDir, "0002-00.wav")); makeMd(new File(m_inboxDir, "0002-00.xml")); FileUtils.touch(new File(m_inboxDir, "0003-00.wav")); makeMd(new File(m_inboxDir, "0003-00.xml")); FileUtils.touch(new File(m_inboxDir, "0003-00.sta")); FileUtils.touch(new File(m_inboxDir, "0004-00.wav")); makeMd(new File(m_inboxDir, "0004-00.xml")); FileUtils.touch(new File(m_inboxDir, "0004-00.sta")); FileUtils.touch(new File(m_inboxDir, "0005-00.dog")); // .dog doesn't count makeMd(new File(m_inboxDir, "0006-00.xml")); // .xml with no .wav, it counts. FileUtils.touch(new File(m_inboxDir, "0007-00.wav")); // .wav with no .xml, doesn't count. makeMd(new File(m_inboxDir, "0008-00.xml")); FileUtils.touch(new File(m_inboxDir, "0008-00.wav")); FileUtils.touch(new File(m_inboxDir, "0008-00.sta")); makeMd(new File(m_inboxDir, "0008-01.xml")); FileUtils.touch(new File(m_inboxDir, "0008-01.wav")); FileUtils.touch(new File(m_inboxDir, "0008-FW.wav")); FileUtils.touch(new File(m_inboxDir, "hey there")); FileUtils.touch(new File(m_inboxDir, "this.is.a.file")); m.loadFolder(m_inboxDir, m.m_inbox, true, null); assertEquals(6, m.getInboxCount()); assertEquals(3, m.getUnheardCount()); m.loadFolder(m_inboxDir, m.m_saved, false, null); assertEquals(6, m.getSavedCount()); assertEquals(3, m.getUnheardCount()); }
From source file:org.sipfoundry.voicemail.MessagesTest.java
public void testSaveDeletePurge() throws IOException, InterruptedException { User user = new User(); user.setUserName("user"); user.setIdentity("user@dog"); Mailbox mbox = new Mailbox(user, m_mailstoreDir.getPath()); FileUtils.touch(new File(m_inboxDir, "0001-00.wav")); makeMd(new File(m_inboxDir, "0001-00.xml")); FileUtils.touch(new File(m_inboxDir, "0001-00.sta")); FileUtils.touch(new File(m_inboxDir, "0001-01.wav")); makeMd(new File(m_inboxDir, "0001-01.xml")); FileUtils.touch(new File(m_inboxDir, "0001-FW.wav")); FileUtils.touch(new File(m_inboxDir, "0002-00.wav")); makeMd(new File(m_inboxDir, "0002-00.xml")); Messages m = Messages.newMessages(mbox); m.loadFolder(m_inboxDir, m.m_inbox, true, null); m.loadFolder(m_savedDir, m.m_saved, false, null); m.loadFolder(m_deletedDir, m.m_deleted, false, null); assertEquals(2, m.getInboxCount());// w w w. j a va2 s. co m assertEquals(1, m.getUnheardCount()); assertEquals(0, m.getSavedCount()); assertEquals(0, m.getDeletedCount()); // Find 0001 VmMessage msg = null; for (VmMessage msg1 : m.getInbox()) { if (msg1.getMessageId().equals("0001")) { msg = msg1; break; } } // Mark 0001 as heard m.markMessageHeard(msg, true); // Prove it assertEquals(2, m.getInboxCount()); assertEquals(0, m.getUnheardCount()); assertEquals(0, m.getSavedCount()); assertEquals(0, m.getDeletedCount()); assertFalse(new File(m_inboxDir, "0001-00.sta").exists()); // Reload and make sure we get the same result Messages.releaseMessages(m); m = Messages.newMessages(mbox); m.loadFolder(m_inboxDir, m.m_inbox, true, null); m.loadFolder(m_savedDir, m.m_saved, false, null); m.loadFolder(m_deletedDir, m.m_deleted, false, null); assertEquals(2, m.getInboxCount()); assertEquals(0, m.getUnheardCount()); assertEquals(0, m.getSavedCount()); assertEquals(0, m.getDeletedCount()); // Find 0001 (again) msg = null; for (VmMessage msg1 : m.getInbox()) { if (msg1.getMessageId().equals("0001")) { msg = msg1; break; } } // Save the message m.saveMessage(msg); assertEquals(1, m.getInboxCount()); assertEquals(0, m.getUnheardCount()); assertEquals(1, m.getSavedCount()); assertEquals(0, m.getDeletedCount()); assertFalse(new File(m_inboxDir, "0001-00.wav").exists()); assertFalse(new File(m_inboxDir, "0001-00.xml").exists()); assertFalse(new File(m_inboxDir, "0001-00.sta").exists()); assertFalse(new File(m_inboxDir, "0001-01.wav").exists()); assertFalse(new File(m_inboxDir, "0001-01.xml").exists()); assertFalse(new File(m_inboxDir, "0001-FW.wav").exists()); File xml = new File(m_savedDir, "0001-00.xml"); File wav = new File(m_savedDir, "0001-FW.wav"); assertEquals(xml.getPath(), msg.m_descriptorFile.getPath()); assertEquals(wav.getPath(), msg.getAudioFile().getPath()); assertTrue(xml.exists()); assertTrue(wav.exists()); // Delete the message m.deleteMessage(msg); assertEquals(1, m.getInboxCount()); assertEquals(0, m.getUnheardCount()); assertEquals(0, m.getSavedCount()); assertEquals(1, m.getDeletedCount()); assertFalse(new File(m_savedDir, "0001-00.xml").exists()); assertFalse(new File(m_savedDir, "0001-FW.wav").exists()); xml = new File(m_deletedDir, "0001-00.xml"); wav = new File(m_deletedDir, "0001-FW.wav"); assertEquals(xml.getPath(), msg.m_descriptorFile.getPath()); assertEquals(wav.getPath(), msg.getAudioFile().getPath()); assertTrue(xml.exists()); assertTrue(wav.exists()); // Revive the message m.saveMessage(msg); assertEquals(2, m.getInboxCount()); assertEquals(0, m.getUnheardCount()); assertEquals(0, m.getSavedCount()); assertEquals(0, m.getDeletedCount()); assertFalse(new File(m_deletedDir, "0001-00.xml").exists()); assertFalse(new File(m_deletedDir, "0001-FW.wav").exists()); assertTrue(new File(m_inboxDir, "0001-00.xml").exists()); assertTrue(new File(m_inboxDir, "0001-FW.wav").exists()); // Delete the message m.deleteMessage(msg); // Purge the message m.deleteMessage(msg); assertEquals(1, m.getInboxCount()); assertEquals(0, m.getUnheardCount()); assertEquals(0, m.getSavedCount()); assertEquals(0, m.getDeletedCount()); assertFalse("File shouldn't exist", new File(m_deletedDir, "0001-00.xml").exists()); assertFalse("File shouldn't exist", new File(m_deletedDir, "0001-FW.wav").exists()); Messages.releaseMessages(m); }
From source file:org.sipfoundry.voicemail.VmMessage.java
public static VmMessage newMessageFromMime(Mailbox mailbox, IMAPMessage msg) { VmMessage me = new VmMessage(); // Generate the next message ID me.m_messageId = ExtMailStore.GetMsgId(msg); if (me.m_messageId == null) { me.m_messageId = nextMessageId(mailbox.getMailstoreDirectory() + "/.."); }//from www . ja v a 2 s . c om // Generate the MessageDescriptor; me.m_messageDescriptor = new MessageDescriptor(); me.m_messageDescriptor.setId(mailbox.getUser().getIdentity()); try { String str = msg.getHeader("X-SIPX-FROMURI", ";"); me.m_messageDescriptor.setFromUri(str); me.m_messageDescriptor.setDurationSecs(msg.getSize()); me.m_unHeard = !msg.isSet(Flag.SEEN); me.m_messageDescriptor.setTimestamp(msg.getReceivedDate().getTime()); me.m_messageDescriptor.setSubject(msg.getSubject()); Priority pr = Priority.NORMAL; if (msg.isSet(Flag.FLAGGED)) { pr = Priority.URGENT; me.m_urgent = true; } me.m_messageDescriptor.setPriority(pr); } catch (MessagingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } String baseName = mailbox.getInboxDirectory() + me.m_messageId + "-00"; me.m_audioFile = new File(baseName + ".wav"); me.m_descriptorFile = new File(baseName + ".xml"); me.m_statusFile = new File(baseName + ".sta"); me.m_urgentFile = new File(baseName + ".urg"); String operation = "storing stuff"; try { if (me.m_unHeard) { operation = "creating status file " + me.m_statusFile.getPath(); LOG.debug("VmMessage::newMessage " + operation); FileUtils.touch(me.m_statusFile); } if (me.m_urgent) { operation = "creating urgent file " + me.m_urgentFile.getPath(); LOG.debug("VmMessage::newMessage " + operation); FileUtils.touch(me.m_urgentFile); } operation = "creating messageDescriptor " + me.m_descriptorFile.getPath(); LOG.debug("VmMessage::newMessage " + operation); new MessageDescriptorWriter().writeObject(me.m_messageDescriptor, me.m_descriptorFile); } catch (IOException e) { LOG.error("VmMessage::newMessage error while " + operation, e); return null; } LOG.info("VmMessage::newMessage created message " + me.m_descriptorFile.getPath()); if (me.m_unHeard) { Mwi.sendMWI(mailbox); } return me; }
From source file:org.sipfoundry.voicemail.VmMessage.java
public static VmMessage newMessage(Mailbox mailbox, Message recording) { VmMessage me = new VmMessage(); // Generate the next message ID me.m_messageId = nextMessageId(mailbox.getMailstoreDirectory() + "/.."); me.m_unHeard = true;//www . j a v a 2 s .co m // Generate the MessageDescriptor; me.m_messageDescriptor = new MessageDescriptor(); me.m_messageDescriptor.setId(mailbox.getUser().getIdentity()); me.m_messageDescriptor.setFromUri(recording.getFromUri()); me.m_messageDescriptor.setDurationSecs(recording.getDuration()); me.m_messageDescriptor.setTimestamp(recording.getTimestamp()); me.m_messageDescriptor.setSubject("Voice Message " + me.m_messageId); me.m_messageDescriptor.setPriority(recording.getPriority()); if (recording.getPriority() == Priority.URGENT) { me.m_urgent = true; } Vector<User> otherRecipients = recording.getOtherRecipeints(); if (otherRecipients != null) { for (User recipient : otherRecipients) { if (!recipient.getUserName().equals(mailbox.getUser().getUserName())) { me.m_messageDescriptor.addOtherRecipient(recipient.getUserName()); } } } File tempFile = recording.getWavFile(); String baseName = mailbox.getInboxDirectory() + me.m_messageId + "-00"; me.m_audioFile = new File(baseName + ".wav"); me.m_descriptorFile = new File(baseName + ".xml"); me.m_statusFile = new File(baseName + ".sta"); me.m_urgentFile = new File(baseName + ".urg"); String operation = "storing stuff"; try { operation = "creating status file " + me.m_statusFile.getPath(); LOG.debug("VmMessage::newMessage " + operation); FileUtils.touch(me.m_statusFile); if (me.m_urgent) { operation = "creating urgent file " + me.m_urgentFile.getPath(); LOG.debug("VmMessage::newMessage " + operation); FileUtils.touch(me.m_urgentFile); } operation = "copying recording .wav file to " + me.m_audioFile.getPath(); LOG.debug("VmMessage::newMessage " + operation); FileUtils.copyFile(tempFile, me.m_audioFile, true); operation = "creating messageDescriptor " + me.m_descriptorFile.getPath(); LOG.debug("VmMessage::newMessage " + operation); new MessageDescriptorWriter().writeObject(me.m_messageDescriptor, me.m_descriptorFile); } catch (IOException e) { LOG.error("VmMessage::newMessage error while " + operation, e); return null; } LOG.info("VmMessage::newMessage created message " + me.m_descriptorFile.getPath()); Mwi.sendMWI(mailbox); me.sendToEmail(mailbox); return me; }
From source file:org.sipfoundry.voicemail.VmMessage.java
/** * Copy this message into the inbox of a Mailbox, with a new message ID. * @param directory/* www.java2s. c o m*/ * @return newly copied message */ public VmMessage copy(Mailbox mailbox) { VmMessage me = new VmMessage(); // Generate the next message ID me.m_messageId = nextMessageId(mailbox.getMailstoreDirectory() + "/.."); // Copy into the inbox of the mailbox File directory = new File(mailbox.getInboxDirectory()); String baseName = mailbox.getInboxDirectory() + me.m_messageId + "-00"; me.m_statusFile = new File(baseName + ".sta"); me.m_urgentFile = new File(baseName + ".urg"); // Copy (with the new message ID in the names) all the files String operation = "copying stuff"; try { me.m_unHeard = true; operation = "creating status file " + me.m_statusFile.getPath(); FileUtils.touch(me.m_statusFile); if (m_urgent) { operation = "creating urgent file " + me.m_urgentFile.getPath(); LOG.debug("VmMessage::newMessage " + operation); FileUtils.touch(me.m_urgentFile); } operation = "copying audio file " + m_audioFile.getPath(); me.m_audioFile = CopyMessageFileToDirectory(m_audioFile, me.m_messageId, directory); if (m_originalAudioFile != null) { // Deal with the forwarded stuff operation = "copying original audio file " + m_originalAudioFile.getPath(); me.m_originalAudioFile = CopyMessageFileToDirectory(m_originalAudioFile, me.m_messageId, directory); operation = "copying original descriptor file " + m_originalDescriptorFile.getPath(); me.m_originalDescriptorFile = CopyMessageFileToDirectory(m_originalDescriptorFile, me.m_messageId, directory); operation = "copying combined audio file " + m_combinedAudioFile.getPath(); me.m_combinedAudioFile = CopyMessageFileToDirectory(m_combinedAudioFile, me.m_messageId, directory); } // Including the descriptor file (which will be wrong for a moment, but it gives us the new name) operation = "copying descriptor file " + m_descriptorFile.getPath(); me.m_descriptorFile = CopyMessageFileToDirectory(m_descriptorFile, me.m_messageId, directory); } catch (IOException e) { LOG.error("VmMessage::copy error while " + operation, e); return null; } // Read the new (but wrong) message descriptor file me.m_messageDescriptor = new MessageDescriptorReader().readObject(me.m_descriptorFile); // correct the other recipient list if (me.m_messageDescriptor.getOtherRecipients() != null) { me.m_messageDescriptor.addOtherRecipient(ValidUsersXML.getUserPart(me.m_messageDescriptor.getId())); me.m_messageDescriptor.removeOtherRecipient(mailbox.getUser().getUserName()); } // Correct the identity in the descriptor file to the correct user me.m_messageDescriptor.setId(mailbox.getUser().getIdentity()); // Correct the subject to the correct subject me.m_messageDescriptor.setSubject("Voice Message " + me.m_messageId); // Write the new file out. new MessageDescriptorWriter().writeObject(me.m_messageDescriptor, me.m_descriptorFile); LOG.info("VmMessage::copy created message " + me.m_descriptorFile.getPath()); Mwi.sendMWI(mailbox); me.sendToEmail(mailbox); return me; }