Author: raminder
Date: Mon Jul 23 17:25:58 2012
New Revision: 1364726
URL: http://svn.apache.org/viewvc?rev=1364726&view=rev
Log:
Applying patch from Viknes. RAVE-725
Modified:
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPersonRepository.java
rave/trunk/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPersonRepositoryTest.java
rave/trunk/rave-demo-gadgets/src/main/webapp/friendsWrapper.js
Modified:
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPersonRepository.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPersonRepository.java?rev=1364726&r1=1364725&r2=1364726&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPersonRepository.java
(original)
+++
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPersonRepository.java
Mon Jul 23 17:25:58 2012
@@ -19,25 +19,31 @@
package org.apache.rave.portal.repository.impl;
+import static org.apache.rave.persistence.jpa.util.JpaUtil.getSingleResult;
+import static org.apache.rave.persistence.jpa.util.JpaUtil.saveOrUpdate;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.commons.lang.StringUtils;
import org.apache.rave.exception.NotSupportedException;
import org.apache.rave.portal.model.JpaGroup;
import org.apache.rave.portal.model.JpaPerson;
+import org.apache.rave.portal.model.JpaUser;
+import org.apache.rave.portal.model.JpaWidget;
import org.apache.rave.portal.model.Person;
+import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.model.Widget;
import org.apache.rave.portal.model.conversion.JpaPersonConverter;
import org.apache.rave.portal.repository.PersonRepository;
import org.apache.rave.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.apache.rave.persistence.jpa.util.JpaUtil.getSingleResult;
-import static org.apache.rave.persistence.jpa.util.JpaUtil.saveOrUpdate;
-
/**
*
*/
@@ -84,9 +90,30 @@ public class JpaPersonRepository impleme
return
CollectionUtils.<Person>toBaseTypedList(friends.getResultList());
}
- @Override
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Override
public List<Person> findFriends(String username, String appId) {
- throw new NotSupportedException();
+ List<Person> friendsUsingWidget = new ArrayList<Person>();
+
+ TypedQuery query =
manager.createNamedQuery(JpaWidget.WIDGET_GET_BY_URL, JpaWidget.class);
+ query.setParameter(JpaWidget.PARAM_URL, appId);
+ final List<JpaWidget> resultList = query.getResultList();
+ Widget widget = getSingleResult(resultList);
+
+ query =
manager.createNamedQuery(JpaUser.USER_GET_ALL_FOR_ADDED_WIDGET, JpaUser.class);
+ query.setParameter(JpaUser.PARAM_WIDGET_ID, widget.getId());
+ List<User> widgetUsers = query.getResultList();
+
+ List<Person> userFriends = findFriends(username);
+ for(Person userFriend : userFriends) {
+ for (User widgetUser : widgetUsers) {
+
if(userFriend.getUsername().equals(widgetUser.getUsername())) {
+ friendsUsingWidget.add(userFriend);
+ }
+ }
+ }
+ return friendsUsingWidget;
}
@Override
Modified:
rave/trunk/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPersonRepositoryTest.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPersonRepositoryTest.java?rev=1364726&r1=1364725&r2=1364726&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPersonRepositoryTest.java
(original)
+++
rave/trunk/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/repository/impl/JpaPersonRepositoryTest.java
Mon Jul 23 17:25:58 2012
@@ -57,6 +57,7 @@ public class JpaPersonRepositoryTest {
private static final String VALID_USER5 = "mario.rossi";
private static final String INVALID_USERNAME = "INVALID_USERNAME";
private static final String FEMALE = "female";
+ private static final String NYTIMES_GADGET_APPID =
"http://widgets.nytimes.com/packages/html/igoogle/topstories.xml";
@PersistenceContext
private EntityManager manager;
@@ -142,9 +143,17 @@ public class JpaPersonRepositoryTest {
repository.findAllConnectedPeopleWithFriend("asdf", "asdf");
}
- @Test(expected = NotSupportedException.class)
- public void findFriends() {
- repository.findFriends("asdf", "asdf");
+ @Test
+ public void findFriendsUsingApp_valid() {
+ List<Person> friendsUsingApp = repository.findFriends(VALID_USER,
NYTIMES_GADGET_APPID);
+ assertThat(friendsUsingApp.size(), is(equalTo(1)));
+ assertThat(friendsUsingApp.get(0).getUsername(),
is(equalTo(VALID_USER2)));
+ }
+
+ @Test
+ public void findFriendsUsingApp_invalid() {
+ List<Person> friendsUsingApp = repository.findFriends(INVALID_USERNAME,
NYTIMES_GADGET_APPID);
+ assertThat(friendsUsingApp.isEmpty(), is(true));
}
@Test
@@ -225,11 +234,11 @@ public class JpaPersonRepositoryTest {
person = repository.get(VALID_ID);
assertThat(person, is(nullValue()));
}
-
+
@Test
public void read_properties() {
Person person = repository.get(VALID_ID);
- assertThat(person.getProperties().size(), is(1));
+ assertThat(person.getProperties().size(), is(1));
}
}
Modified: rave/trunk/rave-demo-gadgets/src/main/webapp/friendsWrapper.js
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-demo-gadgets/src/main/webapp/friendsWrapper.js?rev=1364726&r1=1364725&r2=1364726&view=diff
==============================================================================
--- rave/trunk/rave-demo-gadgets/src/main/webapp/friendsWrapper.js (original)
+++ rave/trunk/rave-demo-gadgets/src/main/webapp/friendsWrapper.js Mon Jul 23
17:25:58 2012
@@ -41,6 +41,11 @@ function friendsWrapper() {
params[opensocial.DataRequest.PeopleRequestFields.FILTER] =
opensocial.DataRequest.FilterType.IS_FRIENDS_WITH;
params["filterValue"] = opensocial.IdSpec.PersonId.VIEWER;
req.add(req.newFetchPeopleRequest(ownerFriends, params),
'mutualFriends');
+ var app_params = {};
+ app_params[opensocial.DataRequest.PeopleRequestFields.MAX] = 100;
+ // Usage of hasApp filter to get list of friends who use this app.
+ app_params[opensocial.DataRequest.PeopleRequestFields.FILTER] =
opensocial.DataRequest.FilterType.HAS_APP;
+ req.add(req.newFetchPeopleRequest(ownerFriends, app_params),
'friendsUsingApp');
req.send(displayFriends);
};
@@ -71,6 +76,15 @@ function friendsWrapper() {
});
html.push('</ul>');
}
+ var friendsUsingApp = data.get('friendsUsingApp').getData();
+ html.push('Friends using this Widget (',friendsUsingApp.size(),')
<br>');
+ html.push('<ul>');
+ friendsUsingApp.each(function(person) {
+ if (person.getId()) {
+ html.push('<li>', person.getDisplayName(), '</li>');
+ }
+ });
+ html.push('</ul>');
document.getElementById('friends').innerHTML = html.join('');
gadgets.window.adjustHeight();
}