/* * Copyright (c) 2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.wso2.carbon.registry.social.impl.message; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.registry.core.Collection; import org.wso2.carbon.registry.core.Registry; import org.wso2.carbon.registry.core.Resource; import org.wso2.carbon.registry.core.exceptions.RegistryException; import org.wso2.carbon.registry.social.api.SocialMessageException; import org.wso2.carbon.registry.social.api.message.Message; import org.wso2.carbon.registry.social.api.message.MessageCollection; import org.wso2.carbon.registry.social.api.message.MessageManager; import org.wso2.carbon.registry.social.api.people.userprofile.model.Url; import org.wso2.carbon.registry.social.api.utils.FilterOptions; import org.wso2.carbon.registry.social.impl.SocialImplConstants; import org.wso2.carbon.registry.social.impl.internal.SocialDSComponent; import org.wso2.carbon.registry.social.impl.people.userprofile.model.impl.UrlImpl; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; /** * An implementation of the {@link org.wso2.carbon.registry.social.api.message.MessageManager} interface * <p> * This implementation uses the {@link org.wso2.carbon.registry.core.Registry} to store messages * </p> * <p> * The Message and MessageCollections are stored as a {@link org.wso2.carbon.registry.core.Registry} {@link org.wso2.carbon.registry.core.Resource} * The properties are stored as resource properties * </p> * <p> * <p/> * Each message is grouped under a message collection * </p> * <p> * Resource path : /users/{userId}/messages/{messageCollectionId}/{messageId}/<key><value> * </p> */ public class MessageManagerImpl implements MessageManager { private Registry registry = null; private static Log log = LogFactory.getLog(MessageManagerImpl.class); public void setRegistry(Registry reg) { this.registry = reg; } public Registry getRegistry() throws RegistryException { if (this.registry != null) { return this.registry; } else { return SocialDSComponent.getRegistry(); } } /** * Returns an array of message collections corresponding to the given user details * * @param userId The userId to fetch for * @param fields The fields to fetch for the message collections * @param options Pagination details * @return An array of MessageCollection * @throws SocialMessageException /{userId}/messages/{messageCollectionId}/ */ public MessageCollection[] getMessageCollections(String userId, Set<String> fields, FilterOptions options) throws SocialMessageException { MessageCollection[] resultArray = new MessageCollectionImpl[0]; String messageCollectionPath = SocialImplConstants.USER_REGISTRY_ROOT + userId + SocialImplConstants.MESSAGES_PATH; try { registry = getRegistry(); Collection messageCollections; if (registry.resourceExists(messageCollectionPath)) { // Using the FilterOptions if (options != null && options.getMax() > 0) { messageCollections = registry.get(messageCollectionPath, options.getFirst(), options.getMax()); } else { messageCollections = registry.get(messageCollectionPath, 0, SocialImplConstants.DEFAULT_RETURN_ARRAY_SIZE); } String[] childResourcePath = messageCollections.getChildren(); List<MessageCollection> resultList = new ArrayList<MessageCollection>(); for (String path : childResourcePath) { // Creates MessageCollection objects for each child resource if (registry.resourceExists(path)) { resultList.add(getPropertiesAddedMessageCollectionObj( registry.get(path), fields)); } } if (resultList.size() > 0) { resultArray = resultList.toArray(resultArray); } else { resultArray = null; } } else { throw new SocialMessageException("No MessageCollection exists for user " + userId); } } catch (RegistryException e) { log.error(e.getMessage(), e); throw new SocialMessageException( "Error while retrieving message collections for user " + userId, e); } return resultArray; } /** * Creates a MessageCollection of the the user with given id and attributes * * @param userId The userId to which the collection belongs to * @param msgCollection The MessageCollection object to retrieve the attrobutes * @param messageCollectionId The id of the message collection * @throws SocialMessageException */ public void createMessageCollection(String userId, MessageCollection msgCollection, String messageCollectionId) throws SocialMessageException { if (messageCollectionId == null || userId == null || msgCollection == null) { throw new SocialMessageException( "Invalid parameters to create a message collection"); } try { saveMessageCollection(userId, messageCollectionId, msgCollection, false); } catch (RegistryException e) { log.error(e.getMessage(), e); throw new SocialMessageException("Error while creating message collection with id " + messageCollectionId + " for user " + userId, e); } } /** * Deletes a message collection for the given arguments * * @param userId The userId to create the message collection for * @param messageCollectionId The message Collection ID to be removed * @throws SocialMessageException */ public void deleteMessageCollection(String userId, String messageCollectionId) throws SocialMessageException { try { registry = getRegistry(); String msgCollectionPath = SocialImplConstants.USER_REGISTRY_ROOT + userId + SocialImplConstants.MESSAGES_PATH + SocialImplConstants.SEPARATOR + messageCollectionId; if (registry.resourceExists(msgCollectionPath)) { registry.delete(msgCollectionPath); } else { throw new SocialMessageException("Message Collection doesn't exist with id " + messageCollectionId); } } catch (RegistryException e) { log.error(e.getMessage(), e); throw new SocialMessageException("Error while deleting message collection with id " + messageCollectionId + " for user " + userId, e); } } /** * Modifies/Updates a message collection for the given arguments * * @param userId The userId to modify the message collection for * @param msgCollection Data for the message collection to be modified * @param messageCollectionId The message Collection ID to modify * @throws SocialMessageException */ public void modifyMessageCollection(String userId, MessageCollection msgCollection, String messageCollectionId) throws SocialMessageException { try { saveMessageCollection(userId, messageCollectionId, msgCollection, true); } catch (RegistryException e) { log.error(e.getMessage(), e); throw new SocialMessageException("Error while modifying message collection with id " + messageCollectionId + " for user " + userId, e); } } /** * Returns an array of messages that correspond to the passed in data * * @param userId The userId of the person to fetch message for * @param msgCollectionId The message Collection ID to fetch from, default @all * @param fields The fields to fetch for the messages * @param msgIds An explicit set of message ids to fetch * @param options Options to control the fetch * @throws SocialMessageException */ public Message[] getMessages(String userId, String msgCollectionId, Set<String> fields, List<String> msgIds, FilterOptions options) throws SocialMessageException { if (userId == null || msgCollectionId == null || msgIds == null) { throw new SocialMessageException("Invalid input parameters to retrieve message"); } Message[] messages; List<Message> messagesList = new ArrayList<Message>(); try { registry = getRegistry(); for (String id : msgIds) { String messageResourcePath = SocialImplConstants.USER_REGISTRY_ROOT + userId + SocialImplConstants.MESSAGES_PATH + SocialImplConstants.SEPARATOR + msgCollectionId + SocialImplConstants.SEPARATOR + id; Resource messageResource; if (registry.resourceExists(messageResourcePath)) { messageResource = registry.get(messageResourcePath); //TODO: FilterOptions messagesList.add(getPropertiesAddedMessageOjb(messageResource, fields)); } else { log.error("Message with specified messageId " + id + " is not found"); } } if (messagesList.size() <= 0) { // no messages found log.error("No messages found for the user " + userId); return null; } messages = new Message[messagesList.size()]; messages = messagesList.toArray(messages); } catch (RegistryException e) { log.error(e.getMessage(), e); throw new SocialMessageException( "Error while retrieving messages for user " + userId, e); } return messages; } /** * Posts a message to the user's specified message collection, to be sent to the set of recipients * specified in the message * * @param userId The user posting the message * @param msgCollectionId The message collection Id to post to, default @outbox * @param message The message object * @throws SocialMessageException */ public void createMessage(String userId, String msgCollectionId, Message message) throws SocialMessageException { if (msgCollectionId == null || userId == null || message == null) { throw new SocialMessageException( "Invalid parameters to create a message"); } try { saveMessage(userId, null, msgCollectionId, message.getId(), message, false); } catch (RegistryException e) { log.error(e.getMessage(), e); throw new SocialMessageException( "Error while creating message from message collection with id " + msgCollectionId + " for user " + userId, e); } } /** * Posts a message to the user's specified message collection, to be sent to the set of recipients * specified in the message * * @param userId The user posting the message * @param appId The app id * @param msgCollectionId The message collection Id to post to, default @outbox * @param message The message to post * @throws SocialMessageException */ public void createMessage(String userId, String appId, String msgCollectionId, Message message) throws SocialMessageException { if (msgCollectionId == null || userId == null || message == null) { throw new SocialMessageException( "Invalid parameters to create a message"); } try { saveMessage(userId, appId, msgCollectionId, message.getId(), message, false); } catch (RegistryException e) { log.error(e.getMessage(), e); throw new SocialMessageException( "Error while creating message from message collection with id " + msgCollectionId + " for user " + userId, e); } } /** * Deletes a set of messages for a given user/message collection * * @param userId The userId of the person whose messages to be deleted * @param msgCollectionId The Message Collection ID to delete from, default @all * @param messageIds List of messageIds to delete * @throws SocialMessageException */ public void deleteMessages(String userId, String msgCollectionId, List<String> messageIds) throws SocialMessageException { String messagePath = SocialImplConstants.USER_REGISTRY_ROOT + userId + SocialImplConstants.MESSAGES_PATH + SocialImplConstants.SEPARATOR + msgCollectionId; try { registry = getRegistry(); String fullMessagePath; for (String id : messageIds) { fullMessagePath = messagePath + SocialImplConstants.SEPARATOR + id; if (registry.resourceExists(fullMessagePath)) { registry.delete(fullMessagePath); } else { throw new SocialMessageException( "No message found with specified messageId " + id); } } } catch (RegistryException e) { log.error(e.getMessage(), e); throw new SocialMessageException( "Error while deleting message from message collection with id " + msgCollectionId + " for user " + userId, e); } } /** * Modifies/Updates a specific message with new data * * @param userId The userId of the person whose messaged to be modified * @param msgCollId The Message Collection ID to modify from, default @all * @param messageId The messageId to modify * @param message The message details to modify * @throws SocialMessageException */ public void modifyMessage(String userId, String msgCollId, String messageId, Message message) throws SocialMessageException { try { saveMessage(userId, null, msgCollId, message.getId(), message, true); } catch (RegistryException e) { log.error(e.getMessage(), e); throw new SocialMessageException( "Error while modifying message with id " + messageId + " for user " + userId, e); } } /** * Saves MessageCollection object as a Registry resource * * @param userId The id of the user to whom the messageCollection belongs to * @param collectionId The id of the messageCollection * @param messageCollection The MessageCollection object to save * @param isUpdate If true, the messageCollection is updated with new values * If false, the messageCollection is added with the values * @throws RegistryException */ private void saveMessageCollection(String userId, String collectionId, MessageCollection messageCollection, boolean isUpdate) throws RegistryException { String msgCollectionResourcePath = SocialImplConstants.USER_REGISTRY_ROOT + userId + SocialImplConstants.MESSAGES_PATH + SocialImplConstants.SEPARATOR + collectionId; Resource msgCollectionResource; registry = getRegistry(); if (registry.resourceExists(msgCollectionResourcePath)) { msgCollectionResource = registry.get(msgCollectionResourcePath); } else { msgCollectionResource = registry.newCollection(); } msgCollectionResource = getPropertyAddedMessageCollectionResource(messageCollection, msgCollectionResource, isUpdate); registry.put(msgCollectionResourcePath, msgCollectionResource); } /** * Adds the MessageCollection object attributes to the MessageCollection registry resource as * resource properties and returns the properties added registry resource * * @param msgCollection The messageCollection object to retrieve attributes * @param msgCollectionResource The Registry resource to represent the MessageCollection object * @param isUpdate If true, the resource property values are updated with new values * If false, the values are added as resource properties * @return The properties added Registry Resource */ private Resource getPropertyAddedMessageCollectionResource(MessageCollection msgCollection, Resource msgCollectionResource, boolean isUpdate) { String value; String oldValue; if ((value = msgCollection.getId()) != null) { if (isUpdate) { // need to edit the property value oldValue = msgCollectionResource.getProperty(SocialImplConstants.MSG_COLLECTION_ID); msgCollectionResource.editPropertyValue(SocialImplConstants.MSG_COLLECTION_ID, oldValue, value); } else { // need to add the property msgCollectionResource.setProperty(SocialImplConstants.MSG_COLLECTION_ID, value); } } if ((value = msgCollection.getTitle()) != null) { if (isUpdate) { oldValue = msgCollectionResource.getProperty( SocialImplConstants.MSG_COLLECTION_TITLE); msgCollectionResource.editPropertyValue(SocialImplConstants.MSG_COLLECTION_TITLE, oldValue, value); } else { msgCollectionResource.setProperty(SocialImplConstants.MSG_COLLECTION_TITLE, value); } } if (msgCollection.getUpdated() != null) { if (isUpdate) { oldValue = msgCollectionResource.getProperty( SocialImplConstants.MSG_COLLECTION_UPDATED_DATE); msgCollectionResource.editPropertyValue( SocialImplConstants.MSG_COLLECTION_UPDATED_DATE, oldValue, msgCollection.getUpdated().getTime() + ""); } else { msgCollectionResource.setProperty(SocialImplConstants.MSG_COLLECTION_UPDATED_DATE, msgCollection.getUpdated().getTime() + ""); } } if (msgCollection.getTotal() != null) { if (isUpdate) { oldValue = msgCollectionResource.getProperty( SocialImplConstants.MSG_COLLECTION_TOTAL_MESSAGES); msgCollectionResource.editPropertyValue( SocialImplConstants.MSG_COLLECTION_TOTAL_MESSAGES, oldValue, msgCollection.getTotal().toString()); } else { msgCollectionResource.setProperty(SocialImplConstants.MSG_COLLECTION_TOTAL_MESSAGES, msgCollection.getTotal().toString()); } } if (msgCollection.getUnread() != null) { if (isUpdate) { oldValue = msgCollectionResource.getProperty( SocialImplConstants.MSG_COLLECTION_UNREAD_MESSAGES); msgCollectionResource.editPropertyValue( SocialImplConstants.MSG_COLLECTION_UNREAD_MESSAGES, oldValue, msgCollection.getUnread().toString()); } else { msgCollectionResource.setProperty( SocialImplConstants.MSG_COLLECTION_UNREAD_MESSAGES, msgCollection.getUnread().toString()); } } if (msgCollection.getUrls() != null) { List<String> newPropertyValues = new ArrayList<String>(); for (Url url : msgCollection.getUrls()) { if (url != null) { if (isUpdate) { // edit property values newPropertyValues.add(url.getLinkText()); } else { //add the property values msgCollectionResource.setProperty(SocialImplConstants.MSG_COLLECTION_URLS, url.getLinkText()); } } } if (isUpdate) { // if it is an update, set the urls as new property values msgCollectionResource.setProperty(SocialImplConstants.MSG_COLLECTION_URLS, newPropertyValues); } } return msgCollectionResource; } /** * Returns a MessageCollection type object with the attributes added from the registry resource properties * * @param collectionResource The registry resource to retrieve properties from * @param fields The attributes to add to the MessageCollection object * @return A MessageCollection type object with attributes added */ private MessageCollection getPropertiesAddedMessageCollectionObj(Resource collectionResource, Set<String> fields) { MessageCollection collectionObj = new MessageCollectionImpl(); for (String field : fields) { if (SocialImplConstants.MSG_COLLECTION_ID.equalsIgnoreCase(field.trim())) { collectionObj.setId(collectionResource.getProperty( SocialImplConstants.MSG_COLLECTION_ID)); } else if (SocialImplConstants.MSG_COLLECTION_TITLE.equalsIgnoreCase(field.trim())) { collectionObj.setTitle(collectionResource.getProperty( SocialImplConstants.MSG_COLLECTION_TITLE)); } else if (SocialImplConstants.MSG_COLLECTION_TOTAL_MESSAGES.equalsIgnoreCase( field.trim())) { collectionObj.setTotal(Integer.valueOf(collectionResource.getProperty( SocialImplConstants.MSG_COLLECTION_TOTAL_MESSAGES))); } else if (SocialImplConstants.MSG_COLLECTION_UNREAD_MESSAGES.equalsIgnoreCase( field.trim())) { collectionObj.setUnread(Integer.valueOf(collectionResource.getProperty( SocialImplConstants.MSG_COLLECTION_UNREAD_MESSAGES))); } else if (SocialImplConstants.MSG_COLLECTION_UPDATED_DATE.equalsIgnoreCase( field.trim())) { collectionObj.setUpdated(new Date(Long.valueOf(collectionResource.getProperty( SocialImplConstants.MSG_COLLECTION_UPDATED_DATE)))); } else if (SocialImplConstants.MSG_COLLECTION_URLS.equalsIgnoreCase(field.trim())) { List<Url> collectionUrls = new ArrayList<Url>(); List<String> propertyValues = collectionResource.getPropertyValues( SocialImplConstants.MSG_COLLECTION_URLS); for (String urlString : propertyValues) { Url url = new UrlImpl(); url.setLinkText(urlString); collectionUrls.add(url); } collectionObj.setUrls(collectionUrls); } else { //TODO: Handle non-field values } } return collectionObj; } /** * Saves/updates a message * * @param userId The id of the person whom this message belongs to * @param appId The id of the application to which this message belongs to * @param msgCollectionId The id of the messageCollection to which this message belongs to * @param messageId The id of this message * @param message The message object to save/update * @param isUpdate True - if required to update the message, else False * @throws RegistryException */ private void saveMessage(String userId, String appId, String msgCollectionId, String messageId, Message message, boolean isUpdate) throws RegistryException { String messagePath; if (appId != null) { /* /users/{userId}/messages/{appId}/{msgCollectionId}/{messageId} */ messagePath = SocialImplConstants.USER_REGISTRY_ROOT + userId + SocialImplConstants.MESSAGES_PATH + SocialImplConstants.SEPARATOR + appId + SocialImplConstants.SEPARATOR + msgCollectionId + SocialImplConstants.SEPARATOR + messageId; } else { /* /users/{userId}/messages/{msgCollectionId}/{messageId} */ messagePath = SocialImplConstants.USER_REGISTRY_ROOT + userId + SocialImplConstants.MESSAGES_PATH + SocialImplConstants.SEPARATOR + msgCollectionId + SocialImplConstants.SEPARATOR + messageId; } Resource messageResource; registry = getRegistry(); if (registry.resourceExists(messagePath)) { messageResource = registry.get(messagePath); } else { messageResource = registry.newCollection(); } messageResource = getPropertiesAddedMessageResource(message, messageResource, isUpdate); registry.put(messagePath, messageResource); } /** * Adds/updates the attributes of the message object as registry resource properties * * @param message The Message Object to retrieve message attributes * @param messageResource The registry resource to add/update properties * @param isUpdate True- if required to update the properties else False * @return The registry resource with the properties added */ private Resource getPropertiesAddedMessageResource(Message message, Resource messageResource, boolean isUpdate) { Map<String, String> properties = new HashMap<String, String>(); if (message.getAppUrl() != null) { properties.put(SocialImplConstants.MSG_APP_URL, message.getAppUrl()); } if (message.getBody() != null) { properties.put(SocialImplConstants.MSG_BODY, message.getBody()); } if (message.getBodyId() != null) { properties.put(SocialImplConstants.MSG_BODY_ID, message.getBodyId()); } if (message.getId() != null) { properties.put(SocialImplConstants.MSG_ID, message.getId()); } if (message.getInReplyTo() != null) { properties.put(SocialImplConstants.MSG_IN_REPLY_TO, message.getInReplyTo()); } if (message.getSenderId() != null) { properties.put(SocialImplConstants.MSG_SENDER_ID, message.getSenderId()); } if (message.getStatus() != null) { properties.put(SocialImplConstants.MSG_STATUS, message.getStatus().toString()); } if (message.getTimeSent() != null) { properties.put(SocialImplConstants.MSG_TIME_SENT, message.getTimeSent().getTime() + ""); } if (message.getTitle() != null) { properties.put(SocialImplConstants.MSG_TITLE, message.getTitle()); } if (message.getTitleId() != null) { properties.put(SocialImplConstants.MSG_TITLE_ID, message.getTitleId()); } if (message.getType() != null) { properties.put(SocialImplConstants.MSG_TYPE, message.getType().toString()); } if (message.getUpdated() != null) { properties.put(SocialImplConstants.MSG_UPDATED, message.getUpdated().getTime() + ""); } attachPropertyToResource(messageResource, properties, isUpdate); List<String> propertyValues; if ((propertyValues = message.getCollectionIds()) != null) { messageResource.setProperty(SocialImplConstants.MSG_COLLECTION_ID, propertyValues); } if ((propertyValues = message.getRecipients()) != null) { messageResource.setProperty(SocialImplConstants.MSG_RECIPIENTS, propertyValues); } if ((propertyValues = message.getReplies()) != null) { messageResource.setProperty(SocialImplConstants.MSG_REPLIES, propertyValues); } List<Url> urls = message.getUrls(); propertyValues = new ArrayList<String>(); if (urls != null) { for (Url url : urls) { propertyValues.add(url.getLinkText()); } messageResource.setProperty(SocialImplConstants.MSG_URLS, propertyValues); } return messageResource; } /** * Add/ edit a property value for the given Registry resource * * @param msgResource Registry resource to add/set property * @param properties A Map consisting properties and it's values * @param isUpdate True, if it is an update. False, if it is an addition */ private void attachPropertyToResource(Resource msgResource, Map<String, String> properties, boolean isUpdate) { for (Map.Entry<String, String> e : properties.entrySet()) { if (e.getValue() != null) { if (isUpdate) { String oldValue = msgResource.getProperty(e.getKey()); msgResource.editPropertyValue(e.getKey(), oldValue, e.getValue()); } else { msgResource.addProperty(e.getKey(), e.getValue()); } } } } /** * Returns a Message type object with the attributes added from the registry resource properties * * @param msgResource The registry resource to retrieve message attributes from * @param fields The attributes of the message to be set * @return */ private Message getPropertiesAddedMessageOjb(Resource msgResource, Set<String> fields) { Message messageObj = new MessageImpl(); for (String field : fields) { if (SocialImplConstants.MSG_APP_URL.equalsIgnoreCase(field.trim())) { messageObj.setAppUrl(msgResource.getProperty(SocialImplConstants.MSG_APP_URL)); } else if (SocialImplConstants.MSG_BODY.equalsIgnoreCase(field.trim())) { messageObj.setBody(msgResource.getProperty(SocialImplConstants.MSG_BODY)); } else if (SocialImplConstants.MSG_BODY_ID.equalsIgnoreCase(field.trim())) { messageObj.setBodyId(msgResource.getProperty(SocialImplConstants.MSG_BODY_ID)); } else if (SocialImplConstants.MSG_ID.equalsIgnoreCase(field.trim())) { messageObj.setId(msgResource.getProperty(SocialImplConstants.MSG_ID)); } else if (SocialImplConstants.MSG_IN_REPLY_TO.equalsIgnoreCase(field.trim())) { messageObj.setInReplyTo( msgResource.getProperty(SocialImplConstants.MSG_IN_REPLY_TO)); } else if (SocialImplConstants.MSG_SENDER_ID.equalsIgnoreCase(field.trim())) { messageObj.setSenderId(msgResource.getProperty(SocialImplConstants.MSG_SENDER_ID)); } else if (SocialImplConstants.MSG_STATUS.equalsIgnoreCase(field.trim())) { messageObj.setStatus(Message.Status.valueOf( msgResource.getProperty(SocialImplConstants.MSG_STATUS))); } else if (SocialImplConstants.MSG_TIME_SENT.equalsIgnoreCase(field.trim())) { messageObj.setTimeSent(new Date(Long.valueOf( msgResource.getProperty(SocialImplConstants.MSG_TIME_SENT)))); } else if (SocialImplConstants.MSG_TITLE.equalsIgnoreCase(field.trim())) { messageObj.setTitle(msgResource.getProperty(SocialImplConstants.MSG_TITLE)); } else if (SocialImplConstants.MSG_TITLE_ID.equalsIgnoreCase(field.trim())) { messageObj.setTitleId(msgResource.getProperty(SocialImplConstants.MSG_TITLE_ID)); } else if (SocialImplConstants.MSG_TYPE.equalsIgnoreCase(field.trim())) { messageObj.setType(Message.Type.valueOf( msgResource.getProperty(SocialImplConstants.MSG_TYPE))); } else if (SocialImplConstants.MSG_UPDATED.equalsIgnoreCase(field.trim())) { messageObj.setUpdated(new Date(Long.valueOf( msgResource.getProperty(SocialImplConstants.MSG_UPDATED)))); } } return messageObj; } }