Added photark-social module to trunk.Patch(social_api_v2.patch) submitted by Umashanthi Pavalanathan.

git-svn-id: https://svn.apache.org/repos/asf/incubator/photark/trunk@1128890 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/photark-social/pom.xml b/photark-social/pom.xml
new file mode 100644
index 0000000..13c4e10
--- /dev/null
+++ b/photark-social/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * Licensed to the Apache Software Foundation (ASF) under one
+    * or more contributor license agreements.  See the NOTICE file
+    * distributed with this work for additional information
+    * regarding copyright ownership.  The ASF licenses this file
+    * to you 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.    
+-->
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.photark</groupId>
+		<artifactId>photark-parent</artifactId>
+		<version>1.0-incubating-SNAPSHOT</version>
+		<relativePath>../pom.xml</relativePath>
+	</parent>
+	<artifactId>photark-social</artifactId>
+	<name>Apache PhotArk Social API</name>
+
+	<dependencies>
+		
+	</dependencies>
+
+	<build>
+		<finalName>${artifactId}</finalName>
+	</build>
+
+</project>
diff --git a/photark-social/src/main/java/org/apache/photark/social/activity/Activity.java b/photark-social/src/main/java/org/apache/photark/social/activity/Activity.java
new file mode 100644
index 0000000..aeba94f
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/activity/Activity.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.activity;
+
+import java.util.Date;
+
+public class Activity {
+
+	private String body; // content of the activity
+	private String id; // ID associated with this activity
+	// private Array<MediaItem>
+	private Date postedTime;
+	private String title; // primary text of an activity
+	private String url; // url representing this activity
+	private String userId; // ID of the user to whom this activity is belong to
+
+	public void setBody(String body) {
+		this.body = body;
+	}
+
+	public String getBody() {
+		return body;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public Date getPostedTime() {
+		return postedTime;
+	}
+
+	public void setPostedTime(Date postedTime) {
+		this.postedTime = postedTime;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+	public String getUserId() {
+		return userId;
+	}
+
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/activity/ActivityManager.java b/photark-social/src/main/java/org/apache/photark/social/activity/ActivityManager.java
new file mode 100644
index 0000000..1f20d2d
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/activity/ActivityManager.java
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.activity;
+
+import java.util.Set;
+
+import org.apache.photark.social.exception.PhotArkSocialException;
+import org.apache.photark.social.util.FilterOptions;
+
+public interface ActivityManager {
+
+	/**
+	 * creates an Activity data object with the given fields
+	 * 
+	 * @param userId
+	 *            ID of the user to whom the activity belongs to
+	 * @param groupId
+	 *            optional; ID of the group if this activity belongs to a group
+	 * @param fields
+	 *            attributes of the activity
+	 * @return an Activity data object
+	 * @throws PhotArkSocialException
+	 */
+	Activity createActivity(String userId, String groupId, Set<String> fields)
+			throws PhotArkSocialException;
+
+	/**
+	 * persists the given Activity data object for the given user
+	 * 
+	 * @param userId
+	 *            ID of the user to whom the activity belongs to
+	 * @param activity
+	 *            the Activity data object to persists
+	 * @throws PhotArkSocialException
+	 */
+	void saveActivity(String userId, Activity activity)
+			throws PhotArkSocialException;
+
+	/**
+	 * updates a persisted Activity data object
+	 * 
+	 * @param userId
+	 *            ID of the user to whom the activity belongs to
+	 * @param activity
+	 *            the Activity data object to update
+	 * @throws PhotArkSocialException
+	 */
+	void updateActivity(String userId, Activity activity)
+			throws PhotArkSocialException;
+
+	/**
+	 * removes a persisted Activity data object
+	 * 
+	 * @param userId
+	 *            ID of the user to whom the activity belongs to
+	 * @param activityId
+	 *            ID of the activity to be removed
+	 * @throws PhotArkSocialException
+	 */
+	void deleteActivity(String userId, String activityId)
+			throws PhotArkSocialException;
+
+	/**
+	 * removes a persisted Activity data objects for given activityIds
+	 * 
+	 * @param userId
+	 *            ID of the user to whom the activities belongs to
+	 * @param groupId
+	 *            optional; ID of the group if this activity belongs to a group
+	 * @param activityIds
+	 *            Set of activityIds to be deleted
+	 * @throws PhotArkSocialException
+	 */
+	void deleteActivities(String userId, String groupId, Set<String> activityIds)
+			throws PhotArkSocialException;
+
+	/**
+	 * Retrieves array of Activity data objects matching the given input
+	 * parameters
+	 * 
+	 * @param userIds
+	 *            IDs of the users the activities belongs to
+	 * @param groupId
+	 *            optional; ID of the group, the activities belongs to
+	 * @param fields
+	 *            optional; fields of the activities to be returned
+	 * @param filters
+	 *            optional; any filter options
+	 * @return array of Activity data objects
+	 * @throws PhotArkSocialException
+	 */
+	Activity[] getActivities(String[] userIds, String groupId,
+			Set<String> fields, FilterOptions filters)
+			throws PhotArkSocialException;
+
+	/**
+	 * Retrieves array of Activity data objects matching the given input
+	 * parameters
+	 * 
+	 * @param userIds
+	 *            IDs of the users the activities belongs to
+	 * @param groupId
+	 *            optional; ID of the group, the activities belongs to
+	 * @param fields
+	 *            optional; fields of the activities to be returned
+	 * @param filters
+	 *            optional; any filter options
+	 * @param activityIds
+	 *            array of activityIds
+	 * @return array of Activity data objects
+	 * @throws PhotArkSocialException
+	 */
+	Activity[] getActivities(String userId, String groupId, Set<String> fields,
+			FilterOptions filters, String[] activityIds)
+			throws PhotArkSocialException;
+
+	/**
+	 * Retrieves an Activity data object matching the given input parameters
+	 * 
+	 * @param userIds
+	 *            IDs of the users the activities belongs to
+	 * @param groupId
+	 *            optional; ID of the group, the activities belongs to
+	 * @param fields
+	 *            optional; fields of the activities to be returned
+	 * @param activityId
+	 *            ID of the Activity data object to be retrieved
+	 * @return an Activity data object matching the given input parameters
+	 * @throws PhotArkSocialException
+	 */
+	public Activity getActivity(String userId, String groupId,
+			Set<String> fields, String activityId)
+			throws PhotArkSocialException;
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/activity/ActivityManagerImpl.java b/photark-social/src/main/java/org/apache/photark/social/activity/ActivityManagerImpl.java
new file mode 100644
index 0000000..9ee7fde
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/activity/ActivityManagerImpl.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.activity;
+
+import java.util.Set;
+
+import org.apache.photark.social.exception.PhotArkSocialException;
+import org.apache.photark.social.util.FilterOptions;
+
+public class ActivityManagerImpl implements ActivityManager {
+
+	public Activity createActivity(String userId, String groupId,
+			Set<String> fields) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void saveActivity(String userId, Activity activity)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void updateActivity(String userId, Activity activity)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void deleteActivity(String userId, String activityId)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void deleteActivities(String userId, String groupId,
+			Set<String> activityIds) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public Activity[] getActivities(String[] userIds, String groupId,
+			Set<String> fields, FilterOptions filters)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Activity[] getActivities(String userId, String groupId,
+			Set<String> fields, FilterOptions filters, String[] activityIds)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Activity getActivity(String userId, String groupId,
+			Set<String> fields, String activityId)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/appdata/AppData.java b/photark-social/src/main/java/org/apache/photark/social/appdata/AppData.java
new file mode 100644
index 0000000..d3de42e
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/appdata/AppData.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.appdata;
+
+public class AppData {
+
+	private String id; // id of this app data
+	private String key; // key of the app data
+	private String value; // value of the app data
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	public String getValue() {
+		return value;
+	}
+
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/appdata/AppDataManager.java b/photark-social/src/main/java/org/apache/photark/social/appdata/AppDataManager.java
new file mode 100644
index 0000000..c1f4939
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/appdata/AppDataManager.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.appdata;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.photark.social.exception.PhotArkSocialException;
+
+public interface AppDataManager {
+
+	/**
+	 * Retrieve person data
+	 * 
+	 * @param userId
+	 *            ID of the user the data belongs to
+	 * @param groupId
+	 *            optional; ID of the group the data belongs to
+	 * @return map of name-value pairs
+	 * @throws PhotArkSocialException
+	 */
+	Map<String, String> getPersonData(String userId, String groupId)
+			throws PhotArkSocialException;
+
+	/**
+	 * 
+	 * @param userIds	IDs of the users the data belong to
+	 * @param groupId	optional; ID of the group the data belongs to
+	 * @return	map of name-value pairs for each user
+	 * @throws PhotArkSocialException
+	 */
+	Map<String, Map<String, String>> getPeopleData(String[] userIds,
+			String groupId) throws PhotArkSocialException;
+
+	/**
+	 * 
+	 * @param userId	ID of the user the data belongs to
+	 * @param values 	map of name-value pairs
+	 * @throws PhotArkSocialException
+	 */
+	void savePersonData(String userId, Map<String, String> values)
+			throws PhotArkSocialException;
+
+	/**
+	 * 
+	 * @param userId
+	 * @param groupId
+	 * @param fields
+	 * @throws PhotArkSocialException
+	 */
+
+	void deletePersonData(String userId, String groupId,Set<String> fields) throws PhotArkSocialException;
+
+	/**
+	 * 
+	 * @param userId
+	 * @param groupId
+	 * @param values
+	 * @throws PhotArkSocialException
+	 */
+	void updatePersonData(String userId, String groupId, String appId,
+			Set<String> fields, Map<String, String> values)
+			throws PhotArkSocialException;
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/appdata/AppDataManagerImpl.java b/photark-social/src/main/java/org/apache/photark/social/appdata/AppDataManagerImpl.java
new file mode 100644
index 0000000..fb5ac4d
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/appdata/AppDataManagerImpl.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.appdata;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.photark.social.exception.PhotArkSocialException;
+
+public class AppDataManagerImpl implements AppDataManager{
+
+	public Map<String, String> getPersonData(String userId, String groupId)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Map<String, Map<String, String>> getPeopleData(String[] userIds,
+			String groupId) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void savePersonData(String userId, Map<String, String> values)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void deletePersonData(String userId, String groupId,
+			Set<String> fields) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void updatePersonData(String userId, String groupId, String appId,
+			Set<String> fields, Map<String, String> values)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/exception/PhotArkSocialException.java b/photark-social/src/main/java/org/apache/photark/social/exception/PhotArkSocialException.java
new file mode 100644
index 0000000..4d3dba3
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/exception/PhotArkSocialException.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.exception;
+
+public class PhotArkSocialException extends Throwable{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -5053119486166764904L;
+
+	  public PhotArkSocialException() {
+	    }
+
+	    public PhotArkSocialException(String message) {
+	        super(message);
+	    }
+
+	    public PhotArkSocialException(Throwable cause) {
+	        super(cause);
+	    }
+
+	    public PhotArkSocialException(String message, Throwable cause) {
+	        super(message, cause);
+	    }
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/message/Message.java b/photark-social/src/main/java/org/apache/photark/social/message/Message.java
new file mode 100644
index 0000000..86fe484
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/message/Message.java
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.message;
+
+import java.util.Date;
+import java.util.List;
+
+public class Message {
+
+	private String body; // main text of the message
+	private String id; // unique ID of this message
+	private String inReplyTo; // ID of the message for which this message is a
+								// reply/comment
+	private List<String> recepients; // list of person IDs
+	private List<String> replies; // list of message IDs which are replies for
+									// this message
+	private String senderId; // ID of the person who sent the message
+	private String status; // status of the message (NEW, READ, DELETED)
+	private Date timeSent; // the time message was sent
+	private String title; // title of the message
+	private Date updated; // last updated time of this message
+	private String url; // url for this message
+	public String getBody() {
+		return body;
+	}
+	public void setBody(String body) {
+		this.body = body;
+	}
+	public String getId() {
+		return id;
+	}
+	public void setId(String id) {
+		this.id = id;
+	}
+	public String getInReplyTo() {
+		return inReplyTo;
+	}
+	public void setInReplyTo(String inReplyTo) {
+		this.inReplyTo = inReplyTo;
+	}
+	public List<String> getRecepients() {
+		return recepients;
+	}
+	public void setRecepients(List<String> recepients) {
+		this.recepients = recepients;
+	}
+	public List<String> getReplies() {
+		return replies;
+	}
+	public void setReplies(List<String> replies) {
+		this.replies = replies;
+	}
+	public String getSenderId() {
+		return senderId;
+	}
+	public void setSenderId(String senderId) {
+		this.senderId = senderId;
+	}
+	public String getStatus() {
+		return status;
+	}
+	public void setStatus(String status) {
+		this.status = status;
+	}
+	public Date getTimeSent() {
+		return timeSent;
+	}
+	public void setTimeSent(Date timeSent) {
+		this.timeSent = timeSent;
+	}
+	public String getTitle() {
+		return title;
+	}
+	public void setTitle(String title) {
+		this.title = title;
+	}
+	public Date getUpdated() {
+		return updated;
+	}
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+	public String getUrl() {
+		return url;
+	}
+	public void setUrl(String url) {
+		this.url = url;
+	}
+	
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/message/MessageCollection.java b/photark-social/src/main/java/org/apache/photark/social/message/MessageCollection.java
new file mode 100644
index 0000000..7957030
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/message/MessageCollection.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.message;
+
+import java.util.Date;
+import java.util.List;
+
+public class MessageCollection {
+	public static String ALL="@all";
+	public static String OUTBOX="@outbox";
+	
+	private String id; // unique ID of the message collection
+	private String title; //title of the message collection
+	private int totalCount; // total number of messages for this collection
+	private int unreadCount; //total number of unread messages
+	private Date lastUpdated; // the last time this message collection was modified
+	private List<String> urls; // the URLs related to the message collection
+	public String getId() {
+		return id;
+	}
+	public void setId(String id) {
+		this.id = id;
+	}
+	public String getTitle() {
+		return title;
+	}
+	public void setTitle(String title) {
+		this.title = title;
+	}
+	public int getTotalCount() {
+		return totalCount;
+	}
+	public void setTotalCount(int totalCount) {
+		this.totalCount = totalCount;
+	}
+	public int getUnreadCount() {
+		return unreadCount;
+	}
+	public void setUnreadCount(int unreadCount) {
+		this.unreadCount = unreadCount;
+	}
+	public Date getLastUpdated() {
+		return lastUpdated;
+	}
+	public void setLastUpdated(Date lastUpdated) {
+		this.lastUpdated = lastUpdated;
+	}
+	public List<String> getUrls() {
+		return urls;
+	}
+	public void setUrls(List<String> urls) {
+		this.urls = urls;
+	}
+	
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/message/MessageManager.java b/photark-social/src/main/java/org/apache/photark/social/message/MessageManager.java
new file mode 100644
index 0000000..1635b68
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/message/MessageManager.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.message;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.photark.social.exception.PhotArkSocialException;
+import org.apache.photark.social.util.FilterOptions;
+
+public interface MessageManager {
+	
+	/**
+	 * 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 id of the user posting the message
+	 * @param msgCollId	The message collection Id to post to, default @outbox
+	 * @param message	he message to post
+	 * @throws PhotArkSocialException
+	 * 
+	 */
+	void createMessage(String userId, String msgCollId, Message message) throws PhotArkSocialException;
+	
+	/**
+	 * Creates a new message collection for the given arguments
+	 * @param userId		The userId to create the message collection for
+	 * @param messageColl	A message collection that is to be created
+	 * @throws PhotArkSocialException
+	 */
+
+	void createMessageCollection(String userId, MessageCollection messageColl) throws PhotArkSocialException;
+	
+	/**
+	 * Deletes a message collection for the given arguments
+	 * @param userId		The userId to create the message collection for
+	 * @param msgCollId		ID of the message collection to be deleted
+	 * @throws PhotArkSocialException
+	 */
+	void deleteMessageCollection(String userId, String msgCollId) throws PhotArkSocialException;
+	
+	/**
+	 * Deletes a set of messages for a given user/message collection
+	 * @param userId		The id of the user to delete for
+	 * @param msgCollId		The Message Collection ID to delete from, default @all
+	 * @param msgIds		List of IDs to delete
+	 * @throws PhotArkSocialException
+	 */
+	void deleteMessages(String userId, String msgCollId, List<String> msgIds) throws PhotArkSocialException;
+	
+	/**
+	 * Returns a list of message collections corresponding to the given user
+	 * @param userId		The ID of user to fetch for
+	 * @param fileds		The fields to fetch for the message collections
+	 * @param filters		Pagination options etc
+	 * @return				a list of message collections corresponding to the given user
+	 * @throws PhotArkSocialException
+	 */
+	List<MessageCollection> getMessageCollections(String userId, Set<String> fileds, FilterOptions filters) throws PhotArkSocialException;
+	
+	/**
+	 * Returns a list of messages that correspond to the passed in data
+	 * @param userId	The ID of user to fetch for
+	 * @param msgCollId	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 filters	Options to control the fetch
+	 * @return			a list of messages that correspond to the passed in data
+	 * @throws PhotArkSocialException
+	 */
+	List<Message> getMessages(String userId, String msgCollId, Set<String> fields,List<String> msgIds, FilterOptions filters) throws PhotArkSocialException;
+	
+	/**
+	 * Modifies/Updates a specific message with new data
+	 * @param userId		The of the user to modify for
+	 * @param msgCollId		The Message Collection ID to modify from, default @all
+	 * @param msgId			The messageId to modify
+	 * @param message		The message details to modify
+	 * @throws PhotArkSocialException
+	 */
+	void modifyMessage(String userId, String msgCollId, String msgId, Message message) throws PhotArkSocialException;
+	
+	/**
+	 * Modifies/Updates a message collection for the given arguments
+	 * @param userId 				The userId to modify the message collection for
+	 * @param messageCollection		Data for the message collection to be modified
+	 * @throws PhotArkSocialException
+	 */
+	void modifyMessageCollections(String userId, MessageCollection messageCollection) throws PhotArkSocialException;
+	
+	
+	
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/message/MessageManagerImpl.java b/photark-social/src/main/java/org/apache/photark/social/message/MessageManagerImpl.java
new file mode 100644
index 0000000..f318e6b
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/message/MessageManagerImpl.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.message;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.photark.social.exception.PhotArkSocialException;
+import org.apache.photark.social.util.FilterOptions;
+
+public class MessageManagerImpl implements MessageManager{
+
+	public void createMessage(String userId, String msgCollId, Message message)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void createMessageCollection(String userId,
+			MessageCollection messageColl) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void deleteMessageCollection(String userId, String msgCollId)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void deleteMessages(String userId, String msgCollId,
+			List<String> msgIds) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public List<MessageCollection> getMessageCollections(String userId,
+			Set<String> fileds, FilterOptions filters)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public List<Message> getMessages(String userId, String msgCollId,
+			Set<String> fields, List<String> msgIds, FilterOptions filters)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void modifyMessage(String userId, String msgCollId, String msgId,
+			Message message) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void modifyMessageCollections(String userId,
+			MessageCollection messageCollection) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/person/Group.java b/photark-social/src/main/java/org/apache/photark/social/person/Group.java
new file mode 100644
index 0000000..4f46af9
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/person/Group.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.person;
+
+public class Group {
+	private String id; // ID representing this group
+	private String title; // title of the group
+	private String description; // description of the group
+	public String getId() {
+		return id;
+	}
+	public void setId(String id) {
+		this.id = id;
+	}
+	public String getTitle() {
+		return title;
+	}
+	public void setTitle(String title) {
+		this.title = title;
+	}
+	public String getDescription() {
+		return description;
+	}
+	public void setDescription(String description) {
+		this.description = description;
+	}
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/person/Person.java b/photark-social/src/main/java/org/apache/photark/social/person/Person.java
new file mode 100644
index 0000000..ff3ea2d
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/person/Person.java
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.person;
+
+import java.util.Date;
+import java.util.List;
+
+public class Person {
+	
+	private String aboutMe;
+	private List<String> activities;
+	private String address;
+	private Date birthday;
+	private String displayName;
+	private List<String> emails;
+	private String firstName;
+	private String gender;
+	private String id;
+	private String lastName;
+	private String nickname;
+	private List<String> organizations;
+	private List<String> phoneNumbers;
+	private String thumbnailUrl;
+	public void setAboutMe(String aboutMe) {
+		this.aboutMe = aboutMe;
+	}
+	public String getAboutMe() {
+		return aboutMe;
+	}
+	public void setActivities(List<String> activities) {
+		this.activities = activities;
+	}
+	public List<String> getActivities() {
+		return activities;
+	}
+	public void setAddress(String address) {
+		this.address = address;
+	}
+	public String getAddress() {
+		return address;
+	}
+	public void setBirthday(Date birthday) {
+		this.birthday = birthday;
+	}
+	public Date getBirthday() {
+		return birthday;
+	}
+	public void setDisplayName(String displayName) {
+		this.displayName = displayName;
+	}
+	public String getDisplayName() {
+		return displayName;
+	}
+	public void setEmails(List<String> emails) {
+		this.emails = emails;
+	}
+	public List<String> getEmails() {
+		return emails;
+	}
+	public void setFirstName(String firstName) {
+		this.firstName = firstName;
+	}
+	public String getFirstName() {
+		return firstName;
+	}
+	public void setGender(String gender) {
+		this.gender = gender;
+	}
+	public String getGender() {
+		return gender;
+	}
+	public void setLastName(String lastName) {
+		this.lastName = lastName;
+	}
+	public String getLastName() {
+		return lastName;
+	}
+	public void setId(String id) {
+		this.id = id;
+	}
+	public String getId() {
+		return id;
+	}
+	public void setOrganizations(List<String> organizations) {
+		this.organizations = organizations;
+	}
+	public List<String> getOrganizations() {
+		return organizations;
+	}
+	public void setNickname(String nickname) {
+		this.nickname = nickname;
+	}
+	public String getNickname() {
+		return nickname;
+	}
+	public void setPhoneNumbers(List<String> phoneNumbers) {
+		this.phoneNumbers = phoneNumbers;
+	}
+	public List<String> getPhoneNumbers() {
+		return phoneNumbers;
+	}
+	public void setThumbnailUrl(String thumbnailUrl) {
+		this.thumbnailUrl = thumbnailUrl;
+	}
+	public String getThumbnailUrl() {
+		return thumbnailUrl;
+	}
+	
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/person/PersonManager.java b/photark-social/src/main/java/org/apache/photark/social/person/PersonManager.java
new file mode 100644
index 0000000..6e4ce8f
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/person/PersonManager.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.person;
+
+import org.apache.photark.social.exception.PhotArkSocialException;
+
+public interface PersonManager {
+	/**
+	 * Persists the Person data object
+	 * @param personId ID of the Person data object
+	 * @param person   Person data object
+	 * @throws PhotArkSocialException
+	 */
+	void savePerson(String personId, Person person) throws PhotArkSocialException;
+	
+	/**
+	 * Updates the Person data object with updated fields
+	 * @param personId  ID of the Person data object
+	 * @param person	Person data object with filed to update
+	 * @throws PhotArkSocialException
+	 */
+	
+	void updatePerson(String personId, Person person) throws PhotArkSocialException;
+	
+	/**
+	 * Removes a Person data object from persistence
+	 * @param personId	ID of the Person data object to be removed
+	 * @throws PhotArkSocialException
+	 */
+	void removePerson(String personId) throws PhotArkSocialException;
+	
+	/**
+	 * Retrieves the Person data object for the given ID
+	 * @param personId ID of the Person data object to be retrieved
+	 * @return the Person data object for the given ID
+	 * @throws PhotArkSocialException
+	 */
+	
+	Person getPerson(String personId) throws PhotArkSocialException;
+	
+	/**
+	 * Retrieves the Person data object for the given ID with specified fields
+	 * @param personId 	personId ID of the Person data object to be retrieved
+	 * @param fields	the fields of the Person data object to be retrieved
+	 * @return 	the Person data object for the given ID with the specified fields
+	 * @throws PhotArkSocialException
+	 */
+	
+	Person getPerson(String personId, String[] fields) throws PhotArkSocialException;
+	
+	/**
+	 * Retrieves array of Person data objects for the given person IDs and group
+	 * @param personIds 	String array of IDs of the persons
+	 * @param groupId	the ID of the group the persons belongs to; optional
+	 * @param fields	the fields of the Person data object to be retrieved
+	 * @return	an array of Person data objects
+	 * @throws PhotArkSocialException
+	 */
+	Person[] getPeople(String[] personIds, String groupId,String[] fields) throws PhotArkSocialException;
+	
+	
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/person/PersonManagerImpl.java b/photark-social/src/main/java/org/apache/photark/social/person/PersonManagerImpl.java
new file mode 100644
index 0000000..40199b6
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/person/PersonManagerImpl.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.person;
+
+import org.apache.photark.social.exception.PhotArkSocialException;
+
+public class PersonManagerImpl implements PersonManager {
+
+	public void savePerson(String personId, Person person)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void updatePerson(String personId, Person person)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void removePerson(String personId) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public Person getPerson(String personId) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Person getPerson(String personId, String[] fields)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Person[] getPeople(String[] personIds, String groupId,
+			String[] fields) throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/person/relationship/RelationshipManager.java b/photark-social/src/main/java/org/apache/photark/social/person/relationship/RelationshipManager.java
new file mode 100644
index 0000000..d37b2e5
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/person/relationship/RelationshipManager.java
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.person.relationship;
+
+import org.apache.photark.social.exception.PhotArkSocialException;
+
+public interface RelationshipManager {
+
+	public static final String RELATIONSHIP_FRIEND = "friend";
+	public static final String RELATIONHIP_FRIEND_REQUEST_PENDING = "friend request pending";
+	public static final String RELATIONHIP_FRIEND_REQUEST_RECEIVED = "friend request received";
+	public static final String RELATIONHIP_NONE = "none";
+
+	/**
+	 * Returns the relationship status between two users
+	 * 
+	 * @param veiwer
+	 *            ID of the person who views owner's pages
+	 * @param owner
+	 *            ID of the person whom the pages/resources belongs to
+	 * @return one of {RELATIONSHIP_FRIEND,RELATIONHIP_FRIEND_REQUEST_PENDING,
+	 *         RELATIONHIP_FRIEND_REQUEST_RECEIVED ,RELATIONHIP_NONE}
+	 * @throws PhotArkSocialException
+	 */
+
+	String getRelationshipStatus(String veiwer, String owner)
+			throws PhotArkSocialException;
+
+	/**
+	 * Sends/creates a friend request from viewer to owner
+	 * 
+	 * @param viewer
+	 *            ID of the person who requests for the relationship
+	 * @param owner
+	 *            ID of the person for whom viewer sends the relationship
+	 *            request
+	 * @return true if the request was successful; else false
+	 * @throws PhotArkSocialException
+	 */
+	boolean requestRelationship(String viewer, String owner)
+			throws PhotArkSocialException;
+
+	/**
+	 * Accepts a relationship request from owner
+	 * 
+	 * @param viewer
+	 *            ID of the person who has sent the relationship request
+	 * @param owner
+	 *            ID of the person who has received the relationship request
+	 *            from viewer
+	 * @return true if a relationship was created between viewer and owner;
+	 *         otherwise false
+	 * @throws PhotArkSocialException
+	 */
+	boolean acceptRelationshipRequest(String viewer, String owner)
+			throws PhotArkSocialException;
+
+	/**
+	 * Ignores a relationship request
+	 * 
+	 * @param viewer
+	 *            ID of the person who has sent the relationship request
+	 * @param owner
+	 *            ID of the person who has received the relationship request
+	 *            from viewer
+	 * @return true if the operation was successful
+	 * @throws PhotArkSocialException
+	 */
+	boolean ignoreRelationship(String viewer, String owner)
+			throws PhotArkSocialException;
+
+	/**
+	 * Removing the relationship - i.e: un-friending
+	 * 
+	 * @param owner
+	 *            ID of the person with whom the viewer wants to remove the
+	 *            relationship
+	 * @param viewer
+	 *            ID of the person who wants to remove the relationship with
+	 *            owner
+	 * @return true if the operation was successful
+	 * @throws PhotArkSocialException
+	 */
+	boolean removeRelationship(String owner, String viewer)
+			throws PhotArkSocialException;
+
+	/**
+	 * Retrieves the list relationships the user has
+	 * 
+	 * @param loggedUser
+	 *            ID of the user logged in
+	 * @return array of Strings with the IDs of the persons who has relationship
+	 *         with loggedUser
+	 * @throws PhotArkSocialException
+	 */
+	String[] getRelationshipList(String loggedUser)
+			throws PhotArkSocialException;
+
+	/**
+	 * Retrieves the list of relationship requests
+	 * 
+	 * @param owner
+	 *            ID of the person who has received the relationship requests
+	 * @return array of Strings with the IDs of the persons who has sent
+	 *         relationship requests to the owner
+	 * @throws PhotArkSocialException
+	 */
+	String[] getPendingRelationshipRequests(String owner)
+			throws PhotArkSocialException;
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/person/relationship/RelationshipManagerImpl.java b/photark-social/src/main/java/org/apache/photark/social/person/relationship/RelationshipManagerImpl.java
new file mode 100644
index 0000000..77c0304
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/person/relationship/RelationshipManagerImpl.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.person.relationship;
+
+import org.apache.photark.social.exception.PhotArkSocialException;
+
+public class RelationshipManagerImpl implements RelationshipManager{
+
+	public String getRelationshipStatus(String veiwer, String owner)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public boolean requestRelationship(String viewer, String owner)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public boolean acceptRelationshipRequest(String viewer, String owner)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public boolean ignoreRelationship(String viewer, String owner)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public boolean removeRelationship(String owner, String viewer)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public String[] getRelationshipList(String loggedUser)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public String[] getPendingRelationshipRequests(String owner)
+			throws PhotArkSocialException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
diff --git a/photark-social/src/main/java/org/apache/photark/social/util/FilterOptions.java b/photark-social/src/main/java/org/apache/photark/social/util/FilterOptions.java
new file mode 100644
index 0000000..f7b66c2
--- /dev/null
+++ b/photark-social/src/main/java/org/apache/photark/social/util/FilterOptions.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.photark.social.util;
+
+public class FilterOptions {
+	/**
+	 * This class represents the filtering options when retrieving social data
+	 * object collections
+	 */
+
+}
diff --git a/pom.xml b/pom.xml
index ac06328..d834916 100644
--- a/pom.xml
+++ b/pom.xml
@@ -220,6 +220,7 @@
                 <module>photark-ui-security</module>
                 <module>photark-appengine-webapp</module>                
                 <module>photark-face-recognition</module>
+                <module>photark-social</module>
                 <module>photark-webapp</module>
             </modules>
         </profile>
@@ -243,6 +244,7 @@
                 <module>photark-ui-security</module>
                 <module>photark-appengine-webapp</module>
                 <module>photark-face-recognition</module>
+                <module>photark-social</module>
                 <module>photark-webapp</module>
             </modules>
         </profile>
@@ -267,6 +269,7 @@
                 <module>photark-ui-test</module>                
                 <module>photark-appengine-webapp</module>
                 <module>photark-face-recognition</module>
+                <module>photark-social</module>
                 <module>photark-webapp</module>
             </modules>
         </profile>