You are viewing a plain text version of this content. The canonical link for it is here.
Posted to photark-commits@incubator.apache.org by lr...@apache.org on 2011/08/19 00:34:04 UTC

svn commit: r1159454 - in /incubator/photark/branches/photark-rest/photark-social/src: main/java/org/apache/photark/social/services/ main/java/org/apache/photark/social/services/impl/ test/java/org/apache/photark/social/person/test/ test/resources/

Author: lresende
Date: Fri Aug 19 00:34:03 2011
New Revision: 1159454

URL: http://svn.apache.org/viewvc?rev=1159454&view=rev
Log:
Cleaning up interface, and adding resource based tests

Modified:
    incubator/photark/branches/photark-rest/photark-social/src/main/java/org/apache/photark/social/services/PersonService.java
    incubator/photark/branches/photark-rest/photark-social/src/main/java/org/apache/photark/social/services/impl/JCRPersonServiceImpl.java
    incubator/photark/branches/photark-rest/photark-social/src/test/java/org/apache/photark/social/person/test/PersonManagerTestCase.java
    incubator/photark/branches/photark-rest/photark-social/src/test/resources/person-test.composite

Modified: incubator/photark/branches/photark-rest/photark-social/src/main/java/org/apache/photark/social/services/PersonService.java
URL: http://svn.apache.org/viewvc/incubator/photark/branches/photark-rest/photark-social/src/main/java/org/apache/photark/social/services/PersonService.java?rev=1159454&r1=1159453&r2=1159454&view=diff
==============================================================================
--- incubator/photark/branches/photark-rest/photark-social/src/main/java/org/apache/photark/social/services/PersonService.java (original)
+++ incubator/photark/branches/photark-rest/photark-social/src/main/java/org/apache/photark/social/services/PersonService.java Fri Aug 19 00:34:03 2011
@@ -19,6 +19,8 @@
 
 package org.apache.photark.social.services;
 
+import java.util.List;
+
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
@@ -35,96 +37,83 @@ import org.oasisopen.sca.annotation.Remo
 
 @Remotable
 public interface PersonService {
-	/**
-	 * Persists the Person data object
-	 * 
-	 * @param personId
-	 *            ID of the Person data object
-	 * @param person
-	 *            Person data object
-	 * @throws PhotArkSocialException
-	 */
-	@POST
-	@Path("/people/{userId}")
-	@Consumes(MediaType.APPLICATION_JSON)
-	void savePerson(@PathParam("userId") 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
-	 */
-	@PUT
-	@Path("/people/{userId}")
-	@Consumes(MediaType.APPLICATION_JSON)
-	void updatePerson(@PathParam("userId") 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
-	 */
-
-	@DELETE
-	@Path("/people/{userId}")
-	void removePerson(@PathParam("userId") 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
-	 */
-
-	/*@GET
-	@Produces(MediaType.APPLICATION_JSON)
-	@Path("/people/{userId}/@self")
-	Person getPerson(@PathParam("userId") 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
-	 */
-	@GET
-	@Produces(MediaType.APPLICATION_JSON)
-	@Path("/people/{userId}/self")
-	Person getPerson(@PathParam("userId") String personId)
-			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
-	 */
-	/*@GET
-	@Produces(MediaType.APPLICATION_JSON)
-	@Path("/people/{userId}/@friends")
-	Person[] getPeople(String[] personIds, String groupId, String[] fields)
-			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
+     */
+    @GET
+    @Path("/people")
+    @Produces(MediaType.APPLICATION_JSON)
+    List<Person> getPersons() 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
+     */
+    @GET
+    @Path("/people/{userId}")
+    @Produces(MediaType.APPLICATION_JSON)
+    Person getPerson(@PathParam("userId") String personId) throws PhotArkSocialException;
+    
+    /**
+     * Persists the Person data object
+     * 
+     * @param personId ID of the Person data object
+     * @param person Person data object
+     * @throws PhotArkSocialException
+     */
+    @POST
+    @Path("/people")
+    @Consumes(MediaType.APPLICATION_JSON)
+    Person addPerson(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
+     */
+    @PUT
+    @Path("/people/{userId}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    void updatePerson(@PathParam("userId") 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
+     */
+
+    @DELETE
+    @Path("/people/{userId}")
+    void removePerson(@PathParam("userId") String personId) 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
+     */
+    /*
+     * @GET
+     * @Produces(MediaType.APPLICATION_JSON)
+     * @Path("/people/{userId}/@friends") Person[] getPeople(String[] personIds,
+     * String groupId, String[] fields) throws PhotArkSocialException;
+     */
 
 }

Modified: incubator/photark/branches/photark-rest/photark-social/src/main/java/org/apache/photark/social/services/impl/JCRPersonServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/photark/branches/photark-rest/photark-social/src/main/java/org/apache/photark/social/services/impl/JCRPersonServiceImpl.java?rev=1159454&r1=1159453&r2=1159454&view=diff
==============================================================================
--- incubator/photark/branches/photark-rest/photark-social/src/main/java/org/apache/photark/social/services/impl/JCRPersonServiceImpl.java (original)
+++ incubator/photark/branches/photark-rest/photark-social/src/main/java/org/apache/photark/social/services/impl/JCRPersonServiceImpl.java Fri Aug 19 00:34:03 2011
@@ -21,6 +21,7 @@ package org.apache.photark.social.servic
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.logging.Level;
@@ -53,11 +54,40 @@ public class JCRPersonServiceImpl implem
     public JCRPersonServiceImpl(@Reference(name = "repositoryManager") JCRRepositoryManager repositoryManager) {
         this.repositoryManager = repositoryManager;
     }
+    
 
-    public void savePerson(String personId, Person person) throws PhotArkSocialException {
+    /*
+     * public Person getPerson(String personId) throws PhotArkSocialException {
+     * return getPerson(personId, null); }
+     */
+
+    public Person getPerson(String personId) throws PhotArkSocialException {
+        Node personProfileNode = null;
+        Person personObj = null;
+        try {
+            personProfileNode = PhotArkSocialUtil.getPersonProfileRootNode(repositoryManager, personId, false);
+            if (personProfileNode != null) {
+                personObj = createPersonObjFromProfileNode(personProfileNode);
+            }
+        } catch (PhotarkRuntimeException e) {
+            logger.log(Level.SEVERE, "Error retrieving person data from photark repository :" + e.getMessage(), e);
+            throw new PhotArkSocialException("Error retrieving person data from photark repository :" + e.getMessage(), e);
+        } catch (RepositoryException e) {
+            logger.log(Level.SEVERE, "Error retrieving person data from photark repository :" + e.getMessage(), e);
+            throw new PhotArkSocialException("Error retrieving person data from photark repository :" + e.getMessage(), e);
+        }
+        return personObj;
+    }
+
+    public List<Person> getPersons() throws PhotArkSocialException {
+        return Collections.EMPTY_LIST;
+    }
+
+    public Person addPerson(Person person) throws PhotArkSocialException {
         if (person == null) {
             throw new PhotArkSocialException("Unable to save person. Given Person object is null");
         }
+        String personId = person.getId();
         Node socialDataRootNode = null;
         Node personProfileNode = null;
 
@@ -79,6 +109,7 @@ public class JCRPersonServiceImpl implem
             throw new PhotArkSocialException("Error saving person data to photark repository :" + e.getMessage(), e);
         }
 
+        return person;
     }
 
     public void updatePerson(String personId, Person person) throws PhotArkSocialException {
@@ -91,7 +122,7 @@ public class JCRPersonServiceImpl implem
             logger.log(Level.SEVERE, "Error retrieving social data root from photark repository :" + e.getMessage(), e);
             throw new PhotArkSocialException("Error retrieving social data root from photark repository :" + e.getMessage(), e);
         }
-        savePerson(personId, person);
+        addPerson(person);
 
     }
 
@@ -112,29 +143,6 @@ public class JCRPersonServiceImpl implem
     }
 
     /*
-     * public Person getPerson(String personId) throws PhotArkSocialException {
-     * return getPerson(personId, null); }
-     */
-
-    public Person getPerson(String personId) throws PhotArkSocialException {
-        Node personProfileNode = null;
-        Person personObj = null;
-        try {
-            personProfileNode = PhotArkSocialUtil.getPersonProfileRootNode(repositoryManager, personId, false);
-            if (personProfileNode != null) {
-                personObj = createPersonObjFromProfileNode(personProfileNode);
-            }
-        } catch (PhotarkRuntimeException e) {
-            logger.log(Level.SEVERE, "Error retrieving person data from photark repository :" + e.getMessage(), e);
-            throw new PhotArkSocialException("Error retrieving person data from photark repository :" + e.getMessage(), e);
-        } catch (RepositoryException e) {
-            logger.log(Level.SEVERE, "Error retrieving person data from photark repository :" + e.getMessage(), e);
-            throw new PhotArkSocialException("Error retrieving person data from photark repository :" + e.getMessage(), e);
-        }
-        return personObj;
-    }
-
-    /*
      * public Person[] getPeople(String[] personIds, String groupId, String[]
      * fields) throws PhotArkSocialException { // TODO Auto-generated method
      * stub return null; }

Modified: incubator/photark/branches/photark-rest/photark-social/src/test/java/org/apache/photark/social/person/test/PersonManagerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/photark/branches/photark-rest/photark-social/src/test/java/org/apache/photark/social/person/test/PersonManagerTestCase.java?rev=1159454&r1=1159453&r2=1159454&view=diff
==============================================================================
--- incubator/photark/branches/photark-rest/photark-social/src/test/java/org/apache/photark/social/person/test/PersonManagerTestCase.java (original)
+++ incubator/photark/branches/photark-rest/photark-social/src/test/java/org/apache/photark/social/person/test/PersonManagerTestCase.java Fri Aug 19 00:34:03 2011
@@ -19,31 +19,32 @@
 
 package org.apache.photark.social.person.test;
 
-import java.io.File;
-import java.io.IOException;
+import java.io.ByteArrayInputStream;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
 import java.util.List;
 
-import javax.jcr.LoginException;
-import javax.jcr.RepositoryException;
-
-import org.apache.photark.services.jcr.JCRRepositoryManager;
 import org.apache.photark.social.Person;
-import org.apache.photark.social.PhotArkSocialException;
 import org.apache.photark.social.services.PersonService;
-import org.apache.photark.social.services.impl.JCRPersonServiceImpl;
 import org.apache.tuscany.sca.node.Contribution;
 import org.apache.tuscany.sca.node.ContributionLocationHelper;
 import org.apache.tuscany.sca.node.Node;
 import org.apache.tuscany.sca.node.NodeFactory;
+import org.json.JSONObject;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import com.meterware.httpunit.PostMethodWebRequest;
+import com.meterware.httpunit.WebConversation;
+import com.meterware.httpunit.WebRequest;
+import com.meterware.httpunit.WebResponse;
+
 public class PersonManagerTestCase {
+    protected static final String PEOPLE_SERVICE_URL = "http://localhost:8085/people";
+        
     private static Node node;
     private static PersonService personService;
 
@@ -72,7 +73,7 @@ public class PersonManagerTestCase {
     }
     
     @Test
-    public void testPersonManagerImpl() throws IOException, PhotArkSocialException, LoginException, RepositoryException {
+    public void testPersonOperations() throws Exception {
         Person person = new Person();
         person.setId("testuser1");
         person.setDisplayName("TestUser1");
@@ -84,7 +85,7 @@ public class PersonManagerTestCase {
         activities.add("Movies");
         activities.add("Cricket");
         person.setActivities(activities);
-        personService.savePerson("testuser1", person);
+        personService.addPerson(person);
         Person person2 = personService.getPerson("testuser1");
         Assert.assertNotNull(person2);
         Assert.assertEquals("testuser1", person2.getId());
@@ -96,6 +97,22 @@ public class PersonManagerTestCase {
         personService.removePerson("testuser1");
         person2 = personService.getPerson("testuser1");
         Assert.assertNull(person2);
-
+    }
+    
+    
+    public void testPersonResource() throws Exception {
+        JSONObject jsonPerson = new JSONObject();
+        jsonPerson.put("id", "testuser2");
+        jsonPerson.put("firstName", "test");
+        jsonPerson.put("lastName", "user2");
+
+        WebConversation wc = new WebConversation();
+        WebRequest request   = new PostMethodWebRequest(PEOPLE_SERVICE_URL, new ByteArrayInputStream(jsonPerson.toString().getBytes("UTF-8")),"application/json");
+        request.setHeaderField("Content-Type", "application/json");
+        WebResponse response = wc.getResource(request);
+
+        Assert.assertEquals(204, response.getResponseCode());
+        
+        personService.removePerson("testuser2");
     }
 }

Modified: incubator/photark/branches/photark-rest/photark-social/src/test/resources/person-test.composite
URL: http://svn.apache.org/viewvc/incubator/photark/branches/photark-rest/photark-social/src/test/resources/person-test.composite?rev=1159454&r1=1159453&r2=1159454&view=diff
==============================================================================
--- incubator/photark/branches/photark-rest/photark-social/src/test/resources/person-test.composite (original)
+++ incubator/photark/branches/photark-rest/photark-social/src/test/resources/person-test.composite Fri Aug 19 00:34:03 2011
@@ -31,7 +31,7 @@
 	<component name="PersonServiceComponent">
 		<implementation.java class="org.apache.photark.social.services.impl.JCRPersonServiceImpl"/>
 		<service name="PersonService">
-			<tuscany:binding.rest name="rest" uri="/people">
+			<tuscany:binding.rest name="rest" uri="http://localhost:8085/people">
 			    <tuscany:operationSelector.jaxrs />
     		</tuscany:binding.rest>