List of usage examples for com.liferay.portal.kernel.util ObjectValuePair getValue
public V getValue()
From source file:com.cd.learning.hook.MBMailMessage.java
License:Open Source License
public List<ObjectValuePair<String, InputStream>> getInputStreamOVPs() { List<ObjectValuePair<String, InputStream>> inputStreamOVPs = new ArrayList<ObjectValuePair<String, InputStream>>( _bytesOVPs.size());//from w ww . j a v a 2 s .c o m for (ObjectValuePair<String, byte[]> bytesOVP : _bytesOVPs) { String key = bytesOVP.getKey(); byte[] bytes = bytesOVP.getValue(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); ObjectValuePair<String, InputStream> inputStreamOVP = new ObjectValuePair<String, InputStream>(key, byteArrayInputStream); inputStreamOVPs.add(inputStreamOVP); } return inputStreamOVPs; }
From source file:com.liferay.message.boards.internal.exportimport.data.handler.MBMessageStagedModelDataHandler.java
License:Open Source License
@Override protected void doImportStagedModel(PortletDataContext portletDataContext, MBMessage message) throws Exception { if (!message.isRoot()) { StagedModelDataHandlerUtil.importReferenceStagedModel(portletDataContext, message, MBMessage.class, message.getParentMessageId()); }//from w w w . j a v a2 s . co m long userId = portletDataContext.getUserId(message.getUserUuid()); Map<Long, Long> categoryIds = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(MBCategory.class); long parentCategoryId = MapUtil.getLong(categoryIds, message.getCategoryId(), message.getCategoryId()); Map<Long, Long> threadIds = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(MBThread.class); long threadId = MapUtil.getLong(threadIds, message.getThreadId(), 0); Element messageElement = portletDataContext.getImportDataStagedModelElement(message); if (threadId == 0) { String threadUuid = messageElement.attributeValue("threadUuid"); MBThread thread = _mbThreadLocalService.fetchMBThreadByUuidAndGroupId(threadUuid, portletDataContext.getScopeGroupId()); if (thread != null) { threadId = thread.getThreadId(); } } Map<Long, Long> messageIds = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(MBMessage.class); long parentMessageId = MapUtil.getLong(messageIds, message.getParentMessageId(), message.getParentMessageId()); List<ObjectValuePair<String, InputStream>> inputStreamOVPs = getAttachments(portletDataContext, messageElement, message); try { ServiceContext serviceContext = portletDataContext.createServiceContext(message); MBMessage importedMessage = null; if (portletDataContext.isDataStrategyMirror()) { MBMessage existingMessage = fetchStagedModelByUuidAndGroupId(message.getUuid(), portletDataContext.getScopeGroupId()); if (existingMessage == null) { serviceContext.setUuid(message.getUuid()); if (message.isDiscussion()) { importedMessage = addDiscussionMessage(portletDataContext, userId, threadId, parentMessageId, message, serviceContext); } else { importedMessage = _mbMessageLocalService.addMessage(userId, message.getUserName(), portletDataContext.getScopeGroupId(), parentCategoryId, threadId, parentMessageId, message.getSubject(), message.getBody(), message.getFormat(), inputStreamOVPs, message.getAnonymous(), message.getPriority(), message.getAllowPingbacks(), serviceContext); } } else { if (!message.isRoot() && message.isDiscussion()) { MBDiscussion discussion = _mbDiscussionLocalService.getThreadDiscussion(threadId); importedMessage = _mbMessageLocalService.updateDiscussionMessage(userId, existingMessage.getMessageId(), discussion.getClassName(), discussion.getClassPK(), message.getSubject(), message.getBody(), serviceContext); } else { importedMessage = _mbMessageLocalService.updateMessage(userId, existingMessage.getMessageId(), message.getSubject(), message.getBody(), inputStreamOVPs, new ArrayList<String>(), message.getPriority(), message.getAllowPingbacks(), serviceContext); } } } else { if (message.isDiscussion()) { importedMessage = addDiscussionMessage(portletDataContext, userId, threadId, parentMessageId, message, serviceContext); } else { importedMessage = _mbMessageLocalService.addMessage(userId, message.getUserName(), portletDataContext.getScopeGroupId(), parentCategoryId, threadId, parentMessageId, message.getSubject(), message.getBody(), message.getFormat(), inputStreamOVPs, message.getAnonymous(), message.getPriority(), message.getAllowPingbacks(), serviceContext); } } importedMessage = _updateAnswer(message, importedMessage); if (importedMessage.isRoot() && !importedMessage.isDiscussion()) { _mbThreadLocalService.updateQuestion(importedMessage.getThreadId(), GetterUtil.getBoolean(messageElement.attributeValue("question"))); } if (message.isDiscussion()) { Map<Long, Long> discussionIds = (Map<Long, Long>) portletDataContext .getNewPrimaryKeysMap(MBDiscussion.class); discussionIds.put(message.getMessageId(), importedMessage.getMessageId()); } threadIds.put(message.getThreadId(), importedMessage.getThreadId()); // Keep thread UUID MBThread thread = importedMessage.getThread(); thread.setUuid(messageElement.attributeValue("threadUuid")); _mbThreadLocalService.updateMBThread(thread); portletDataContext.importClassedModel(message, importedMessage); } finally { for (ObjectValuePair<String, InputStream> inputStreamOVP : inputStreamOVPs) { InputStream inputStream = inputStreamOVP.getValue(); StreamUtil.cleanUp(inputStream); } } }
From source file:com.liferay.message.boards.internal.messaging.MailingListMessageListener.java
License:Open Source License
protected void processMessage(MailingListRequest mailingListRequest, Message mailMessage) throws Exception { if (MBUtil.hasMailIdHeader(mailMessage)) { return;/* w ww. j a v a 2 s .c o m*/ } String from = null; Address[] addresses = mailMessage.getFrom(); if (ArrayUtil.isNotEmpty(addresses)) { Address address = addresses[0]; if (address instanceof InternetAddress) { from = ((InternetAddress) address).getAddress(); } else { from = address.toString(); } } long companyId = mailingListRequest.getCompanyId(); long groupId = mailingListRequest.getGroupId(); long categoryId = mailingListRequest.getCategoryId(); if (_log.isDebugEnabled()) { _log.debug("Category id " + categoryId); } boolean anonymous = false; User user = _userLocalService.fetchUserByEmailAddress(companyId, from); if (user == null) { if (!mailingListRequest.isAllowAnonymous()) { return; } anonymous = true; user = _userLocalService.getUserById(companyId, mailingListRequest.getUserId()); } long parentMessageId = MBUtil.getParentMessageId(mailMessage); if (_log.isDebugEnabled()) { _log.debug("Parent message id " + parentMessageId); } MBMessage parentMessage = null; if (parentMessageId > 0) { parentMessage = _mbMessageLocalService.fetchMBMessage(parentMessageId); } if (_log.isDebugEnabled()) { _log.debug("Parent message " + parentMessage); } MBMailMessage mbMailMessage = new MBMailMessage(); MBMailUtil.collectPartContent(mailMessage, mbMailMessage); PermissionCheckerUtil.setThreadValues(user); MailingListThreadLocal.setSourceMailingList(true); String subject = MBUtil.getSubjectWithoutMessageId(mailMessage); ServiceContext serviceContext = new ServiceContext(); serviceContext.setAddGroupPermissions(true); serviceContext.setAddGuestPermissions(true); String portletId = PortletProviderUtil.getPortletId(MBMessage.class.getName(), PortletProvider.Action.VIEW); serviceContext.setLayoutFullURL(_portal.getLayoutFullURL(groupId, portletId)); serviceContext.setScopeGroupId(groupId); List<ObjectValuePair<String, InputStream>> inputStreamOVPs = mbMailMessage.getInputStreamOVPs(); try { if (parentMessage == null) { _mbMessageService.addMessage(groupId, categoryId, subject, mbMailMessage.getBody(), MBMessageConstants.DEFAULT_FORMAT, inputStreamOVPs, anonymous, 0.0, true, serviceContext); } else { _mbMessageService.addMessage(parentMessage.getMessageId(), subject, mbMailMessage.getBody(), MBMessageConstants.DEFAULT_FORMAT, inputStreamOVPs, anonymous, 0.0, true, serviceContext); } } finally { for (ObjectValuePair<String, InputStream> inputStreamOVP : inputStreamOVPs) { try (InputStream inputStream = inputStreamOVP.getValue()) { } catch (IOException ioe) { if (_log.isWarnEnabled()) { _log.warn(ioe, ioe); } } } } }
From source file:com.liferay.message.boards.internal.pop.MessageListenerImpl.java
License:Open Source License
@Override public void deliver(String from, String recipient, Message message) throws MessageListenerException { List<ObjectValuePair<String, InputStream>> inputStreamOVPs = null; try {/*from www.ja v a2 s. c om*/ StopWatch stopWatch = new StopWatch(); stopWatch.start(); if (_log.isDebugEnabled()) { _log.debug("Deliver message from " + from + " to " + recipient); } String messageIdString = getMessageIdString(recipient, message); Company company = getCompany(messageIdString); if (_log.isDebugEnabled()) { _log.debug("Message id " + messageIdString); } long parentMessageId = MBUtil.getMessageId(messageIdString); if (_log.isDebugEnabled()) { _log.debug("Parent message id " + parentMessageId); } MBMessage parentMessage = null; if (parentMessageId > 0) { parentMessage = _mbMessageLocalService.fetchMBMessage(parentMessageId); } if (_log.isDebugEnabled()) { _log.debug("Parent message " + parentMessage); } long groupId = 0; long categoryId = MBUtil.getCategoryId(messageIdString); MBCategory category = _mbCategoryLocalService.fetchMBCategory(categoryId); if (category == null) { categoryId = MBCategoryConstants.DEFAULT_PARENT_CATEGORY_ID; if (parentMessage != null) { groupId = parentMessage.getGroupId(); } } else { groupId = category.getGroupId(); } if (_log.isDebugEnabled()) { _log.debug("Group id " + groupId); _log.debug("Category id " + categoryId); } User user = _userLocalService.getUserByEmailAddress(company.getCompanyId(), from); String subject = null; if (parentMessage != null) { subject = MBUtil.getSubjectForEmail(parentMessage); } MBMailMessage mbMailMessage = new MBMailMessage(); MBUtil.collectPartContent(message, mbMailMessage); inputStreamOVPs = mbMailMessage.getInputStreamOVPs(); PermissionCheckerUtil.setThreadValues(user); ServiceContext serviceContext = new ServiceContext(); serviceContext.setAttribute("propagatePermissions", Boolean.TRUE); String portletId = PortletProviderUtil.getPortletId(MBMessage.class.getName(), PortletProvider.Action.VIEW); serviceContext.setLayoutFullURL(PortalUtil.getLayoutFullURL(groupId, portletId, StringUtil.equalsIgnoreCase(Http.HTTPS, PropsValues.WEB_SERVER_PROTOCOL))); serviceContext.setScopeGroupId(groupId); if (parentMessage == null) { _mbMessageService.addMessage(groupId, categoryId, subject, mbMailMessage.getBody(), MBMessageConstants.DEFAULT_FORMAT, inputStreamOVPs, false, 0.0, true, serviceContext); } else { _mbMessageService.addMessage(parentMessage.getMessageId(), subject, mbMailMessage.getBody(), MBMessageConstants.DEFAULT_FORMAT, inputStreamOVPs, false, 0.0, true, serviceContext); } if (_log.isDebugEnabled()) { _log.debug("Delivering message takes " + stopWatch.getTime() + " ms"); } } catch (PrincipalException pe) { if (_log.isDebugEnabled()) { _log.debug("Prevented unauthorized post from " + from); } throw new MessageListenerException(pe); } catch (Exception e) { _log.error(e, e); throw new MessageListenerException(e); } finally { if (inputStreamOVPs != null) { for (ObjectValuePair<String, InputStream> inputStreamOVP : inputStreamOVPs) { InputStream inputStream = inputStreamOVP.getValue(); StreamUtil.cleanUp(inputStream); } } PermissionCheckerUtil.setThreadValues(null); } }
From source file:com.liferay.message.boards.internal.util.MBMailMessage.java
License:Open Source License
public List<ObjectValuePair<String, InputStream>> getInputStreamOVPs() { List<ObjectValuePair<String, InputStream>> inputStreamOVPs = new ArrayList<>(_bytesOVPs.size()); for (ObjectValuePair<String, byte[]> bytesOVP : _bytesOVPs) { String key = bytesOVP.getKey(); byte[] bytes = bytesOVP.getValue(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); ObjectValuePair<String, InputStream> inputStreamOVP = new ObjectValuePair<>(key, byteArrayInputStream); inputStreamOVPs.add(inputStreamOVP); }/*from w w w.j a v a 2 s .c o m*/ return inputStreamOVPs; }
From source file:com.liferay.message.boards.web.internal.portlet.action.EditMessageMVCActionCommand.java
License:Open Source License
protected MBMessage updateMessage(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); long messageId = ParamUtil.getLong(actionRequest, "messageId"); long groupId = themeDisplay.getScopeGroupId(); long categoryId = ParamUtil.getLong(actionRequest, "mbCategoryId"); long threadId = ParamUtil.getLong(actionRequest, "threadId"); long parentMessageId = ParamUtil.getLong(actionRequest, "parentMessageId"); String subject = ParamUtil.getString(actionRequest, "subject"); String body = ParamUtil.getString(actionRequest, "body"); MBGroupServiceSettings mbGroupServiceSettings = MBGroupServiceSettings.getInstance(groupId); List<ObjectValuePair<String, InputStream>> inputStreamOVPs = new ArrayList<>(5); try {/*from ww w . j ava 2s. co m*/ UploadPortletRequest uploadPortletRequest = PortalUtil.getUploadPortletRequest(actionRequest); for (int i = 1; i <= 5; i++) { String fileName = uploadPortletRequest.getFileName("msgFile" + i); InputStream inputStream = uploadPortletRequest.getFileAsStream("msgFile" + i); if ((inputStream == null) || Validator.isNull(fileName)) { continue; } ObjectValuePair<String, InputStream> inputStreamOVP = new ObjectValuePair<>(fileName, inputStream); inputStreamOVPs.add(inputStreamOVP); } boolean question = ParamUtil.getBoolean(actionRequest, "question"); boolean anonymous = ParamUtil.getBoolean(actionRequest, "anonymous"); double priority = ParamUtil.getDouble(actionRequest, "priority"); boolean allowPingbacks = ParamUtil.getBoolean(actionRequest, "allowPingbacks"); ServiceContext serviceContext = ServiceContextFactory.getInstance(MBMessage.class.getName(), actionRequest); boolean preview = ParamUtil.getBoolean(actionRequest, "preview"); serviceContext.setAttribute("preview", preview); MBMessage message = null; if (messageId <= 0) { if (PropsValues.CAPTCHA_CHECK_PORTLET_MESSAGE_BOARDS_EDIT_MESSAGE) { CaptchaUtil.check(actionRequest); } if (threadId <= 0) { // Post new thread message = _mbMessageService.addMessage(groupId, categoryId, subject, body, mbGroupServiceSettings.getMessageFormat(), inputStreamOVPs, anonymous, priority, allowPingbacks, serviceContext); if (question) { _mbThreadLocalService.updateQuestion(message.getThreadId(), true); } } else { // Post reply message = _mbMessageService.addMessage(parentMessageId, subject, body, mbGroupServiceSettings.getMessageFormat(), inputStreamOVPs, anonymous, priority, allowPingbacks, serviceContext); } } else { List<String> existingFiles = new ArrayList<>(); for (int i = 1; i <= 5; i++) { String path = ParamUtil.getString(actionRequest, "existingPath" + i); if (Validator.isNotNull(path)) { existingFiles.add(path); } } // Update message message = _mbMessageService.updateMessage(messageId, subject, body, inputStreamOVPs, existingFiles, priority, allowPingbacks, serviceContext); if (message.isRoot()) { _mbThreadLocalService.updateQuestion(message.getThreadId(), question); } } PermissionChecker permissionChecker = themeDisplay.getPermissionChecker(); boolean subscribe = ParamUtil.getBoolean(actionRequest, "subscribe"); if (!preview && subscribe && MBMessagePermission.contains(permissionChecker, message, ActionKeys.SUBSCRIBE)) { _mbMessageService.subscribeMessage(message.getMessageId()); } return message; } finally { for (ObjectValuePair<String, InputStream> inputStreamOVP : inputStreamOVPs) { InputStream inputStream = inputStreamOVP.getValue(); StreamUtil.cleanUp(inputStream); } } }
From source file:com.liferay.portlet.messageboards.lar.MBPortletDataHandlerImpl.java
License:Open Source License
protected void importMessage(PortletDataContext portletDataContext, Element messageElement, MBMessage message) throws Exception { long userId = portletDataContext.getUserId(message.getUserUuid()); String userName = message.getUserName(); Map<Long, Long> categoryPKs = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(MBCategory.class); long categoryId = MapUtil.getLong(categoryPKs, message.getCategoryId(), message.getCategoryId()); Map<Long, Long> threadPKs = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(MBThread.class); long threadId = MapUtil.getLong(threadPKs, message.getThreadId(), 0); Map<Long, Long> messagePKs = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(MBMessage.class); long parentMessageId = MapUtil.getLong(messagePKs, message.getParentMessageId(), message.getParentMessageId()); List<String> existingFiles = new ArrayList<String>(); List<ObjectValuePair<String, InputStream>> inputStreamOVPs = getAttachments(portletDataContext, messageElement, message);/*from w w w . j av a2s.c o m*/ try { ServiceContext serviceContext = portletDataContext.createServiceContext(messageElement, message, _NAMESPACE); if (message.getStatus() != WorkflowConstants.STATUS_APPROVED) { serviceContext.setWorkflowAction(WorkflowConstants.ACTION_SAVE_DRAFT); } categoryId = getCategoryId(portletDataContext, message, categoryPKs, categoryId); MBMessage importedMessage = null; if (portletDataContext.isDataStrategyMirror()) { MBMessage existingMessage = MBMessageUtil.fetchByUUID_G(message.getUuid(), portletDataContext.getScopeGroupId()); if (existingMessage == null) { serviceContext.setUuid(message.getUuid()); importedMessage = MBMessageLocalServiceUtil.addMessage(userId, userName, portletDataContext.getScopeGroupId(), categoryId, threadId, parentMessageId, message.getSubject(), message.getBody(), message.getFormat(), inputStreamOVPs, message.getAnonymous(), message.getPriority(), message.getAllowPingbacks(), serviceContext); } else { importedMessage = MBMessageLocalServiceUtil.updateMessage(userId, existingMessage.getMessageId(), message.getSubject(), message.getBody(), inputStreamOVPs, existingFiles, message.getPriority(), message.getAllowPingbacks(), serviceContext); } } else { importedMessage = MBMessageLocalServiceUtil.addMessage(userId, userName, portletDataContext.getScopeGroupId(), categoryId, threadId, parentMessageId, message.getSubject(), message.getBody(), message.getFormat(), inputStreamOVPs, message.getAnonymous(), message.getPriority(), message.getAllowPingbacks(), serviceContext); } threadPKs.put(message.getThreadId(), importedMessage.getThreadId()); portletDataContext.importClassedModel(message, importedMessage, _NAMESPACE); } finally { for (ObjectValuePair<String, InputStream> inputStreamOVP : inputStreamOVPs) { InputStream inputStream = inputStreamOVP.getValue(); StreamUtil.cleanUp(inputStream); } } }
From source file:com.liferay.portlet.messageboards.messaging.MailingListMessageListener.java
License:Open Source License
protected void processMessage(MailingListRequest mailingListRequest, Message mailMessage) throws Exception { if (MBUtil.hasMailIdHeader(mailMessage)) { return;// www .jav a2s . co m } String from = null; Address[] addresses = mailMessage.getFrom(); if ((addresses != null) && (addresses.length > 0)) { Address address = addresses[0]; if (address instanceof InternetAddress) { from = ((InternetAddress) address).getAddress(); } else { from = address.toString(); } } long companyId = mailingListRequest.getCompanyId(); long groupId = mailingListRequest.getGroupId(); long categoryId = mailingListRequest.getCategoryId(); if (_log.isDebugEnabled()) { _log.debug("Category id " + categoryId); } boolean anonymous = false; User user = UserLocalServiceUtil.getUserById(companyId, mailingListRequest.getUserId()); try { user = UserLocalServiceUtil.getUserByEmailAddress(companyId, from); } catch (NoSuchUserException nsue) { anonymous = true; if (!mailingListRequest.isAllowAnonymous()) { return; } } long parentMessageId = MBUtil.getParentMessageId(mailMessage); if (_log.isDebugEnabled()) { _log.debug("Parent message id " + parentMessageId); } MBMessage parentMessage = null; try { if (parentMessageId > 0) { parentMessage = MBMessageLocalServiceUtil.getMessage(parentMessageId); } } catch (NoSuchMessageException nsme) { } if (_log.isDebugEnabled()) { _log.debug("Parent message " + parentMessage); } MBMailMessage mbMailMessage = new MBMailMessage(); MBUtil.collectPartContent(mailMessage, mbMailMessage); PermissionCheckerUtil.setThreadValues(user); MailingListThreadLocal.setSourceMailingList(true); String subject = MBUtil.getSubjectWithoutMessageId(mailMessage); ServiceContext serviceContext = new ServiceContext(); serviceContext.setAddGroupPermissions(true); serviceContext.setAddGuestPermissions(true); serviceContext.setLayoutFullURL(PortalUtil.getLayoutFullURL(groupId, PortletKeys.MESSAGE_BOARDS)); serviceContext.setScopeGroupId(groupId); List<ObjectValuePair<String, InputStream>> inputStreamOVPs = mbMailMessage.getInputStreamOVPs(); try { if (parentMessage == null) { MBMessageServiceUtil.addMessage(groupId, categoryId, subject, mbMailMessage.getBody(), MBMessageConstants.DEFAULT_FORMAT, inputStreamOVPs, anonymous, 0.0, true, serviceContext); } else { MBMessageServiceUtil.addMessage(groupId, categoryId, parentMessage.getThreadId(), parentMessage.getMessageId(), subject, mbMailMessage.getBody(), MBMessageConstants.DEFAULT_FORMAT, inputStreamOVPs, anonymous, 0.0, true, serviceContext); } } finally { for (ObjectValuePair<String, InputStream> inputStreamOVP : inputStreamOVPs) { InputStream inputStream = inputStreamOVP.getValue(); StreamUtil.cleanUp(inputStream); } } }
From source file:com.liferay.portlet.messageboards.pop.MessageListenerImpl.java
License:Open Source License
public void deliver(String from, String recipient, Message message) throws MessageListenerException { List<ObjectValuePair<String, InputStream>> inputStreamOVPs = null; try {//from w w w .j a va 2 s . c om StopWatch stopWatch = null; if (_log.isDebugEnabled()) { stopWatch = new StopWatch(); stopWatch.start(); _log.debug("Deliver message from " + from + " to " + recipient); } String messageId = getMessageId(recipient, message); Company company = getCompany(messageId); if (_log.isDebugEnabled()) { _log.debug("Message id " + messageId); } long groupId = 0; long categoryId = getCategoryId(messageId); try { MBCategory category = MBCategoryLocalServiceUtil.getCategory(categoryId); groupId = category.getGroupId(); } catch (NoSuchCategoryException nsce) { groupId = categoryId; categoryId = MBCategoryConstants.DEFAULT_PARENT_CATEGORY_ID; } if (_log.isDebugEnabled()) { _log.debug("Group id " + groupId); _log.debug("Category id " + categoryId); } User user = UserLocalServiceUtil.getUserByEmailAddress(company.getCompanyId(), from); long parentMessageId = getParentMessageId(recipient, message); if (_log.isDebugEnabled()) { _log.debug("Parent message id " + parentMessageId); } MBMessage parentMessage = null; try { if (parentMessageId > 0) { parentMessage = MBMessageLocalServiceUtil.getMessage(parentMessageId); } } catch (NoSuchMessageException nsme) { // If the parent message does not exist we ignore it and post // the message as a new thread. } if (_log.isDebugEnabled()) { _log.debug("Parent message " + parentMessage); } String subject = MBUtil.getSubjectWithoutMessageId(message); MBMailMessage mbMailMessage = new MBMailMessage(); MBUtil.collectPartContent(message, mbMailMessage); inputStreamOVPs = mbMailMessage.getInputStreamOVPs(); PermissionCheckerUtil.setThreadValues(user); ServiceContext serviceContext = new ServiceContext(); serviceContext.setAddGroupPermissions(true); serviceContext.setAddGuestPermissions(true); serviceContext.setLayoutFullURL(PortalUtil.getLayoutFullURL(groupId, PortletKeys.MESSAGE_BOARDS)); serviceContext.setScopeGroupId(groupId); if (parentMessage == null) { MBMessageServiceUtil.addMessage(groupId, categoryId, subject, mbMailMessage.getBody(), MBMessageConstants.DEFAULT_FORMAT, inputStreamOVPs, false, 0.0, true, serviceContext); } else { MBMessageServiceUtil.addMessage(groupId, categoryId, parentMessage.getThreadId(), parentMessage.getMessageId(), subject, mbMailMessage.getBody(), MBMessageConstants.DEFAULT_FORMAT, inputStreamOVPs, false, 0.0, true, serviceContext); } if (_log.isDebugEnabled()) { _log.debug("Delivering message takes " + stopWatch.getTime() + " ms"); } } catch (PrincipalException pe) { if (_log.isDebugEnabled()) { _log.debug("Prevented unauthorized post from " + from); } throw new MessageListenerException(pe); } catch (Exception e) { _log.error(e, e); throw new MessageListenerException(e); } finally { if (inputStreamOVPs != null) { for (ObjectValuePair<String, InputStream> inputStreamOVP : inputStreamOVPs) { InputStream inputStream = inputStreamOVP.getValue(); StreamUtil.cleanUp(inputStream); } } PermissionCheckerUtil.setThreadValues(null); } }
From source file:com.liferay.portlet.messageboards.service.impl.MBMessageLocalServiceImpl.java
License:Open Source License
public MBMessage addMessage(long userId, String userName, long groupId, long categoryId, long threadId, long parentMessageId, String subject, String body, String format, List<ObjectValuePair<String, InputStream>> inputStreamOVPs, boolean anonymous, double priority, boolean allowPingbacks, ServiceContext serviceContext) throws PortalException, SystemException { // Message//from w ww . jav a 2 s . c o m User user = userPersistence.findByPrimaryKey(userId); userName = user.isDefaultUser() ? userName : user.getFullName(); subject = ModelHintsUtil.trimString(MBMessage.class.getName(), "subject", subject); PortletPreferences preferences = ServiceContextUtil.getPortletPreferences(serviceContext); if (preferences != null) { if (!MBUtil.isAllowAnonymousPosting(preferences)) { if (anonymous || user.isDefaultUser()) { throw new PrincipalException(); } } } if (user.isDefaultUser()) { anonymous = true; } Date now = new Date(); long messageId = counterLocalService.increment(); body = SanitizerUtil.sanitize(user.getCompanyId(), groupId, userId, MBMessage.class.getName(), messageId, "text/" + format, body); validate(subject, body); subject = getSubject(subject, body); body = getBody(subject, body); MBMessage message = mbMessagePersistence.create(messageId); message.setUuid(serviceContext.getUuid()); message.setGroupId(groupId); message.setCompanyId(user.getCompanyId()); message.setUserId(user.getUserId()); message.setUserName(userName); message.setCreateDate(serviceContext.getCreateDate(now)); message.setModifiedDate(serviceContext.getModifiedDate(now)); if (threadId > 0) { message.setThreadId(threadId); } if (priority != MBThreadConstants.PRIORITY_NOT_GIVEN) { message.setPriority(priority); } message.setAllowPingbacks(allowPingbacks); message.setStatus(WorkflowConstants.STATUS_DRAFT); message.setStatusByUserId(user.getUserId()); message.setStatusByUserName(userName); message.setStatusDate(serviceContext.getModifiedDate(now)); // Thread if (parentMessageId != MBMessageConstants.DEFAULT_PARENT_MESSAGE_ID) { MBMessage parentMessage = mbMessagePersistence.fetchByPrimaryKey(parentMessageId); if (parentMessage == null) { parentMessageId = MBMessageConstants.DEFAULT_PARENT_MESSAGE_ID; } } MBThread thread = null; if (threadId > 0) { thread = mbThreadPersistence.fetchByPrimaryKey(threadId); } if ((thread == null) || (parentMessageId == MBMessageConstants.DEFAULT_PARENT_MESSAGE_ID)) { thread = mbThreadLocalService.addThread(categoryId, message); } if ((priority != MBThreadConstants.PRIORITY_NOT_GIVEN) && (thread.getPriority() != priority)) { thread.setPriority(priority); mbThreadPersistence.update(thread, false); updatePriorities(thread.getThreadId(), priority); } // Message message.setCategoryId(categoryId); message.setThreadId(thread.getThreadId()); message.setRootMessageId(thread.getRootMessageId()); message.setParentMessageId(parentMessageId); message.setSubject(subject); message.setBody(body); message.setFormat(format); message.setAttachments(!inputStreamOVPs.isEmpty()); message.setAnonymous(anonymous); if (message.isDiscussion()) { long classNameId = PortalUtil.getClassNameId((String) serviceContext.getAttribute("className")); long classPK = GetterUtil.getLong((String) serviceContext.getAttribute("classPK")); message.setClassNameId(classNameId); message.setClassPK(classPK); } mbMessagePersistence.update(message, false); // Attachments if (!inputStreamOVPs.isEmpty()) { long companyId = message.getCompanyId(); long repositoryId = CompanyConstants.SYSTEM; String dirName = message.getAttachmentsDir(); try { DLStoreUtil.deleteDirectory(companyId, repositoryId, dirName); } catch (NoSuchDirectoryException nsde) { if (_log.isDebugEnabled()) { _log.debug(nsde.getMessage()); } } DLStoreUtil.addDirectory(companyId, repositoryId, dirName); for (int i = 0; i < inputStreamOVPs.size(); i++) { ObjectValuePair<String, InputStream> inputStreamOVP = inputStreamOVPs.get(i); String fileName = inputStreamOVP.getKey(); InputStream inputStream = inputStreamOVP.getValue(); try { DLStoreUtil.addFile(companyId, repositoryId, dirName + "/" + fileName, inputStream); } catch (DuplicateFileException dfe) { if (_log.isDebugEnabled()) { _log.debug(dfe.getMessage()); } } } } // Resources if (!message.isDiscussion()) { if (user.isDefaultUser()) { addMessageResources(message, true, true); } else if (serviceContext.isAddGroupPermissions() || serviceContext.isAddGuestPermissions()) { addMessageResources(message, serviceContext.isAddGroupPermissions(), serviceContext.isAddGuestPermissions()); } else { addMessageResources(message, serviceContext.getGroupPermissions(), serviceContext.getGuestPermissions()); } } // Asset updateAsset(userId, message, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(), serviceContext.getAssetLinkEntryIds(), serviceContext.isAssetEntryVisible()); // Expando ExpandoBridge expandoBridge = message.getExpandoBridge(); expandoBridge.setAttributes(serviceContext); // Workflow WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), groupId, userId, message.getWorkflowClassName(), message.getMessageId(), message, serviceContext); // Testing roll back /*if (true) { throw new SystemException("Testing roll back"); }*/ return message; }