You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by ca...@apache.org on 2011/10/27 22:51:45 UTC

svn commit: r1190019 [1/2] - in /incubator/rave/trunk: rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/ rave-components/rave-core/src/main/java/org/apach...

Author: carlucci
Date: Thu Oct 27 20:51:44 2011
New Revision: 1190019

URL: http://svn.apache.org/viewvc?rev=1190019&view=rev
Log:
RAVE-310: Widget ModelPermissionEvaluator and Service Annotations

Added:
    incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluator.java
      - copied, changed from r1189757, incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java
    incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluatorTest.java
      - copied, changed from r1189757, incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluatorTest.java
Modified:
    incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java
    incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
    incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetService.java
    incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultWidgetServiceTest.java
    incubator/rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql
    incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java
    incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/WidgetStoreControllerTest.java
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/db/initial_data.sql
    incubator/rave/trunk/rave-portal/src/test/resources/test-data.sql

Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java?rev=1190019&r1=1190018&r2=1190019&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java Thu Oct 27 20:51:44 2011
@@ -20,23 +20,7 @@ package org.apache.rave.portal.model;
 
 import org.apache.rave.persistence.BasicEntity;
 
-import javax.persistence.Basic;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.Lob;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.persistence.TableGenerator;
+import javax.persistence.*;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
@@ -137,6 +121,11 @@ public class Widget implements BasicEnti
     @Basic @Column(name = "widget_status")
     @Enumerated(EnumType.STRING)
     private WidgetStatus widgetStatus;
+    
+    @XmlElement
+    @ManyToOne
+    @JoinColumn(name = "owner_id")
+    private User owner;
 
     @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
     @JoinColumn(name = "widget_id", referencedColumnName = "entity_id")
@@ -254,6 +243,14 @@ public class Widget implements BasicEnti
     public void setWidgetStatus(WidgetStatus widgetStatus) {
         this.widgetStatus = widgetStatus;
     }
+    
+    public User getOwner() {
+        return owner;
+    }
+
+    public void setOwner(User owner) {
+        this.owner = owner;
+    }    
 
     /**
      * Gets the collection of user ratings for this Widget.
@@ -301,7 +298,8 @@ public class Widget implements BasicEnti
                 ", type='" + type + '\'' +
                 ", author='" + author + '\'' +
                 ", description='" + description + '\'' +
-                ", widgetStatus=" + widgetStatus +
+                ", widgetStatus=" + widgetStatus + '\'' +
+                ", owner=" + owner + 
                 '}';
     }
 }

Copied: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluator.java (from r1189757, incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java)
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluator.java?p2=incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluator.java&p1=incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java&r1=1189757&r2=1190019&rev=1190019&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluator.java Thu Oct 27 20:51:44 2011
@@ -18,9 +18,9 @@
  */
 package org.apache.rave.portal.security.impl;
 
-import org.apache.rave.portal.model.Region;
+import org.apache.rave.portal.model.Widget;
 import org.apache.rave.portal.model.User;
-import org.apache.rave.portal.repository.RegionRepository;
+import org.apache.rave.portal.repository.WidgetRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,37 +30,38 @@ import org.springframework.stereotype.Co
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.rave.portal.model.WidgetStatus;
 
 @Component
-public class DefaultRegionPermissionEvaluator extends AbstractModelPermissionEvaluator<Region>{
+public class DefaultWidgetPermissionEvaluator extends AbstractModelPermissionEvaluator<Widget>{
     private Logger log = LoggerFactory.getLogger(getClass());
-    private RegionRepository regionRepository;
+    private WidgetRepository widgetRepository;
 
     @Autowired
-    public DefaultRegionPermissionEvaluator(RegionRepository regionRepository) {
-        this.regionRepository = regionRepository;
+    public DefaultWidgetPermissionEvaluator(WidgetRepository widgetRepository) {
+        this.widgetRepository = widgetRepository;
     }
 
     @Override
-    public Class<Region> getType() {
-        return Region.class;
+    public Class<Widget> getType() {
+        return Widget.class;
     }
 
     /**
      * Checks to see if the Authentication object has the supplied Permission
-     * on the supplied Region object.  This method invokes the private hasPermission
+     * on the supplied Widget object.  This method invokes the private hasPermission
      * function with the trustedDomainObject parameter set to false since we don't
      * know if the model being passed in was modified in any way from the
      * actual entity in the database.
      *
      * @param authentication the current Authentication object
-     * @param region   the Region model object
+     * @param widget   the Widget model object
      * @param permission     the Permission to check
      * @return true if the Authentication has the proper permission, false otherwise
      */
     @Override
-    public boolean hasPermission(Authentication authentication, Region region, Permission permission) {
-        return hasPermission(authentication, region, permission, false);
+    public boolean hasPermission(Authentication authentication, Widget widget, Permission permission) {
+        return hasPermission(authentication, widget, permission, false);
     }
 
     /**
@@ -83,20 +84,20 @@ public class DefaultRegionPermissionEval
         if (targetId instanceof RaveSecurityContext) {
             hasPermission = verifyRaveSecurityContext(authentication, (RaveSecurityContext) targetId);
         } else {
-            hasPermission = hasPermission(authentication, regionRepository.get((Long) targetId), permission, true);
+            hasPermission = hasPermission(authentication, widgetRepository.get((Long) targetId), permission, true);
         }
         return hasPermission;
     }
 
-    private boolean hasPermission(Authentication authentication, Region region, Permission permission, boolean trustedDomainObject) {
-        // this is our container of trusted region objects that can be re-used
-        // in this method so that the same trusted region object doesn't have to
+    private boolean hasPermission(Authentication authentication, Widget widget, Permission permission, boolean trustedDomainObject) {
+        // this is our container of trusted widget objects that can be re-used
+        // in this method so that the same trusted widget object doesn't have to
         // be looked up in the repository multiple times
-        List<Region> trustedRegionContainer = new ArrayList<Region>();
+        List<Widget> trustedWidgetContainer = new ArrayList<Widget>();
 
         // first execute the AbstractModelPermissionEvaluator's hasPermission function
         // to see if it allows permission via it's "higher authority" logic
-        if (super.hasPermission(authentication, region, permission)) {
+        if (super.hasPermission(authentication, widget, permission)) {
             return true;
         }
 
@@ -105,14 +106,18 @@ public class DefaultRegionPermissionEval
 
         switch (permission) {
             case ADMINISTER:
-                // if you are here, you are not an administrator, so you can't administer Region
+                // if you are here, you are not an administrator, so you can't administer Widget
+                break;          
+            case READ:
+                // users can read any widget which they are the owner of, or any widget that is published
+                hasPermission = isWidgetOwner(authentication, widget, trustedWidgetContainer, trustedDomainObject) ||
+                                isPublishedWidget(widget, trustedWidgetContainer, trustedDomainObject);                
                 break;
             case CREATE:
-            case DELETE:
-            case READ:
             case UPDATE:
-                // anyone can create, delete, read, or update a region that they own
-                hasPermission = isRegionOwner(authentication, region, trustedRegionContainer, trustedDomainObject);
+            case DELETE:
+                // anyone can create, delete, or update a widget that they own
+                hasPermission = isWidgetOwner(authentication, widget, trustedWidgetContainer, trustedDomainObject);
                 break;
             default:
                 log.warn("unknown permission: " + permission);
@@ -122,39 +127,49 @@ public class DefaultRegionPermissionEval
         return hasPermission;
     }
 
-    // returns a trusted Region object, either from the RegionRepository, or the
+    // returns a trusted Widget object, either from the WidgetRepository, or the
     // cached container list
-    private Region getTrustedRegion(long regionId, List<Region> trustedRegionContainer) {
-        Region region = null;
-        if (trustedRegionContainer.isEmpty()) {
-            region = regionRepository.get(regionId);
-            trustedRegionContainer.add(region);
+    private Widget getTrustedWidget(long widgetId, List<Widget> trustedWidgetContainer) {
+        Widget widget = null;
+        if (trustedWidgetContainer.isEmpty()) {
+            widget = widgetRepository.get(widgetId);
+            trustedWidgetContainer.add(widget);
         } else {
-            region = trustedRegionContainer.get(0);
+            widget = trustedWidgetContainer.get(0);
         }
-        return region;
+        return widget;
     }
 
-    // checks to see if the Authentication object principal is the owner of the supplied region object
+    // checks to see if the Authentication object principal is the owner of the supplied widget object
     // if trustedDomainObject is false, pull the entity from the database first to ensure
     // the model object is trusted and hasn't been modified
-    private boolean isRegionOwner(Authentication authentication, Region region, List<Region> trustedRegionContainer, boolean trustedDomainObject) {
-        Region trustedRegion = null;
+    private boolean isWidgetOwner(Authentication authentication, Widget widget, List<Widget> trustedWidgetContainer, boolean trustedDomainObject) {
+        Widget trustedWidget = null;
         if (trustedDomainObject) {
-            trustedRegion = region;
+            trustedWidget = widget;
         } else {
-            trustedRegion = getTrustedRegion(region.getEntityId(), trustedRegionContainer);
+            trustedWidget = getTrustedWidget(widget.getEntityId(), trustedWidgetContainer);
         }
-        return isRegionOwnerByUsername(authentication, trustedRegion.getPage().getOwner().getUsername());
+        return isWidgetOwnerByUsername(authentication, trustedWidget.getOwner().getUsername());
     }
 
-    private boolean isRegionOwnerByUsername(Authentication authentication, String username) {
+    private boolean isWidgetOwnerByUsername(Authentication authentication, String username) {
         return ((User)authentication.getPrincipal()).getUsername().equals(username);
     }
 
-    private boolean isRegionOwnerById(Authentication authentication, Long userId) {
+    private boolean isWidgetOwnerById(Authentication authentication, Long userId) {
         return ((User)authentication.getPrincipal()).getEntityId().equals(userId);
     }
+    
+    private boolean isPublishedWidget(Widget widget, List<Widget> trustedWidgetContainer, boolean trustedDomainObject) {
+        Widget trustedWidget = null;
+        if (trustedDomainObject) {
+            trustedWidget = widget;
+        } else {
+            trustedWidget = getTrustedWidget(widget.getEntityId(), trustedWidgetContainer);
+        }
+        return WidgetStatus.PUBLISHED.equals(trustedWidget.getWidgetStatus());
+    }    
 
     private boolean verifyRaveSecurityContext(Authentication authentication, RaveSecurityContext raveSecurityContext) {
         Class<?> clazz = null;
@@ -166,7 +181,7 @@ public class DefaultRegionPermissionEval
 
         // perform the permissions check based on the class supplied to the RaveSecurityContext object
         if (User.class == clazz) {
-            return isRegionOwnerById(authentication, (Long) raveSecurityContext.getId());
+            return isWidgetOwnerById(authentication, (Long) raveSecurityContext.getId());
         } else {
             throw new IllegalArgumentException("unknown RaveSecurityContext type: " + raveSecurityContext.getType());
         }

Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java?rev=1190019&r1=1190018&r2=1190019&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java Thu Oct 27 20:51:44 2011
@@ -131,10 +131,9 @@ public interface PageService {
      * @param pageId the id of the page to add the widget to
      * @param widgetId the {@link org.apache.rave.portal.model.Widget} id to add
      * @return a valid widget instance
-     * 
-     * TODO: add a second hasPermission clause for Widget once the WidgetPermissionEvaluator has been created     
      */
-    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'update')") 
+    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'update') and " +
+                  "hasPermission(#widgetId, 'org.apache.rave.portal.model.Widget', 'read')") 
     RegionWidget addWidgetToPage(long pageId, long widgetId);
 
     /**

Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetService.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetService.java?rev=1190019&r1=1190018&r2=1190019&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetService.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/WidgetService.java Thu Oct 27 20:51:44 2011
@@ -24,6 +24,8 @@ import org.apache.rave.portal.model.util
 import org.apache.rave.portal.model.util.WidgetStatistics;
 
 import java.util.Map;
+import org.springframework.security.access.prepost.PostAuthorize;
+import org.springframework.security.access.prepost.PreAuthorize;
 
 /**
  * Provides widget operations
@@ -66,6 +68,7 @@ public interface WidgetService {
      * @param id the Id of the widget
      * @return a valid widget if one exists for the given id; null otherwise
      */
+    @PostAuthorize("hasPermission(returnObject, 'read')")  
     Widget getWidget(long id);
 
     /**
@@ -107,6 +110,7 @@ public interface WidgetService {
      * @param widgetUrl url of the Widget
      * @return {@link Widget} if it exists, otherwise {@literal null}
      */
+    @PostAuthorize("hasPermission(returnObject, 'read')")
     Widget getWidgetByUrl(String widgetUrl);
 
 
@@ -116,6 +120,7 @@ public interface WidgetService {
      * @param widget new Widget to store
      * @return Widget if it is new and can be stored, otherwise {@literal null}
      */
+    @PreAuthorize("hasPermission(new org.apache.rave.portal.security.impl.RaveSecurityContext(#widget.owner.entityId, 'org.apache.rave.portal.model.User'), 'org.apache.rave.portal.model.Widget', 'create')")    
     Widget registerNewWidget(Widget widget);
     
     /**
@@ -140,6 +145,6 @@ public interface WidgetService {
      *
      * @param widget to save
      */
+    @PreAuthorize("hasPermission(new org.apache.rave.portal.security.impl.RaveSecurityContext(#widget.owner.entityId, 'org.apache.rave.portal.model.User'), 'org.apache.rave.portal.model.Widget', 'update')")        
     void updateWidget(Widget widget);
-
 }

Copied: incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluatorTest.java (from r1189757, incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluatorTest.java)
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluatorTest.java?p2=incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluatorTest.java&p1=incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluatorTest.java&r1=1189757&r2=1190019&rev=1190019&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluatorTest.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/security/impl/DefaultWidgetPermissionEvaluatorTest.java Thu Oct 27 20:51:44 2011
@@ -19,9 +19,9 @@
 package org.apache.rave.portal.security.impl;
 
 import org.apache.rave.portal.model.Page;
-import org.apache.rave.portal.model.Region;
+import org.apache.rave.portal.model.Widget;
 import org.apache.rave.portal.model.User;
-import org.apache.rave.portal.repository.RegionRepository;
+import org.apache.rave.portal.repository.WidgetRepository;
 import org.apache.rave.portal.security.ModelPermissionEvaluator;
 import org.apache.rave.portal.security.util.AuthenticationUtils;
 import org.junit.Before;
@@ -33,15 +33,16 @@ import org.springframework.security.core
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.rave.portal.model.WidgetStatus;
 import static org.easymock.EasyMock.*;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
-public class DefaultRegionPermissionEvaluatorTest {
-    private DefaultRegionPermissionEvaluator defaultRegionPermissionEvaluator;
-    private RegionRepository mockRegionRepository;
+public class DefaultWidgetPermissionEvaluatorTest {
+    private DefaultWidgetPermissionEvaluator defaultWidgetPermissionEvaluator;
+    private WidgetRepository mockWidgetRepository;
     private Page page;
-    private Region region, region2;
+    private Widget widget, widget2;
     private User user, user2;
     private Authentication mockAuthentication;
     private List<GrantedAuthority> grantedAuthoritiesList;
@@ -54,8 +55,8 @@ public class DefaultRegionPermissionEval
 
     @Before
     public void setUp() {
-        mockRegionRepository = createMock(RegionRepository.class);
-        defaultRegionPermissionEvaluator = new DefaultRegionPermissionEvaluator(mockRegionRepository);
+        mockWidgetRepository = createMock(WidgetRepository.class);
+        defaultWidgetPermissionEvaluator = new DefaultWidgetPermissionEvaluator(mockWidgetRepository);
         mockAuthentication = createMock(Authentication.class);
 
         user = new User();
@@ -66,23 +67,24 @@ public class DefaultRegionPermissionEval
         page = new Page();
         page.setEntityId(VALID_PAGE_ID);
         page.setOwner(user);
-        region = new Region();
-        region.setEntityId(VALID_REGION_ID);
-        region.setPage(page);
+        widget = new Widget();
+        widget.setEntityId(VALID_REGION_ID);
+        widget.setOwner(user);
+        widget.setWidgetStatus(WidgetStatus.PUBLISHED);
         grantedAuthoritiesList = new ArrayList<GrantedAuthority>();
         grantedAuthoritiesList.add(new GrantedAuthorityImpl("ROLE_USER"));
     }
 
     @Test
     public void testGetType() throws ClassNotFoundException {
-        assertThat(defaultRegionPermissionEvaluator.getType().getName(), is(Region.class.getName()));
+        assertThat(defaultWidgetPermissionEvaluator.getType().getName(), is(Widget.class.getName()));
     }
 
     @Test
     public void testHasPermission_3args_administer() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         replay(mockAuthentication);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, region, ModelPermissionEvaluator.Permission.ADMINISTER), is(false));
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.ADMINISTER), is(false));
         verify(mockAuthentication);
     }
 
@@ -91,237 +93,251 @@ public class DefaultRegionPermissionEval
         grantedAuthoritiesList.add(new GrantedAuthorityImpl(AuthenticationUtils.ROLE_ADMIN));
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         replay(mockAuthentication);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, region, ModelPermissionEvaluator.Permission.ADMINISTER), is(true));
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.ADMINISTER), is(true));
         verify(mockAuthentication);
     }
 
     @Test
-    public void testHasPermission_3args_create_isRegionOwner() {
+    public void testHasPermission_3args_create_isWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, region, ModelPermissionEvaluator.Permission.CREATE), is(true));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.CREATE), is(true));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_3args_create_isNotRegionOwner() {
+    public void testHasPermission_3args_create_isNotWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user2);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, region, ModelPermissionEvaluator.Permission.CREATE), is(false));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.CREATE), is(false));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_3args_delete_isRegionOwner() {
+    public void testHasPermission_3args_delete_isWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, region, ModelPermissionEvaluator.Permission.DELETE), is(true));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.DELETE), is(true));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_3args_delete_isNotRegionOwner() {
+    public void testHasPermission_3args_delete_isNotWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user2);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, region, ModelPermissionEvaluator.Permission.DELETE), is(false));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.DELETE), is(false));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_3args_update_isRegionOwner() {
+    public void testHasPermission_3args_update_isWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, region, ModelPermissionEvaluator.Permission.UPDATE), is(true));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.UPDATE), is(true));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_3args_update_isNotRegionOwner() {
+    public void testHasPermission_3args_update_isNotWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user2);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, region, ModelPermissionEvaluator.Permission.UPDATE), is(false));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.UPDATE), is(false));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
-    }
+        verify(mockWidgetRepository);
+    }     
 
     @Test
-    public void testHasPermission_3args_read_isRegionOwner() {
+    public void testHasPermission_3args_read_isWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, region, ModelPermissionEvaluator.Permission.READ), is(true));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.READ), is(true));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_3args_read_isNotRegionOwner() {
+    public void testHasPermission_3args_read_isNotWidgetOwner_isPublishedGadget() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user2);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, region, ModelPermissionEvaluator.Permission.READ), is(false));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.READ), is(true));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
+    public void testHasPermission_3args_read_isNotWidgetOwner_isNotPublishedGadget() {
+        widget.setWidgetStatus(WidgetStatus.PREVIEW);
+        
+        expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
+        expect(mockAuthentication.getPrincipal()).andReturn(user2);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
+        replay(mockAuthentication);
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, widget, ModelPermissionEvaluator.Permission.READ), is(false));
+        verify(mockAuthentication);
+        verify(mockWidgetRepository);
+    }    
+    
+    @Test
     public void testHasPermission_4args_administer() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         replay(mockAuthentication);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Region.class.getName(), ModelPermissionEvaluator.Permission.ADMINISTER), is(false));
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Widget.class.getName(), ModelPermissionEvaluator.Permission.ADMINISTER), is(false));
         verify(mockAuthentication);
     }
 
     @Test
-    public void testHasPermission_4args_create_isRegionOwner() {
+    public void testHasPermission_4args_create_isWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Region.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(true));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Widget.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(true));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_4args_create_isNotRegionOwner() {
+    public void testHasPermission_4args_create_isNotWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user2);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Region.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(false));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Widget.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(false));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_4args_delete_isRegionOwner() {
+    public void testHasPermission_4args_delete_isWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Region.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(true));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Widget.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(true));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_4args_delete_isNotRegionOwner() {
+    public void testHasPermission_4args_delete_isNotWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user2);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Region.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(false));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Widget.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(false));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_4args_read_isRegionOwner() {
+    public void testHasPermission_4args_read_isWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Region.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(true));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Widget.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(true));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_4args_read_isNotRegionOwner() {
+    public void testHasPermission_4args_read_isNotWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user2);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Region.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(false));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Widget.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(false));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_4args_update_isRegionOwner() {
+    public void testHasPermission_4args_update_isWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Region.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(true));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Widget.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(true));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_4args_update_isNotRegionOwner() {
+    public void testHasPermission_4args_update_isNotWidgetOwner() {
         expect(mockAuthentication.getAuthorities()).andReturn(grantedAuthoritiesList);
         expect(mockAuthentication.getPrincipal()).andReturn(user2);
-        expect(mockRegionRepository.get(VALID_REGION_ID)).andReturn(region);
+        expect(mockWidgetRepository.get(VALID_REGION_ID)).andReturn(widget);
         replay(mockAuthentication);
-        replay(mockRegionRepository);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Region.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(false));
+        replay(mockWidgetRepository);
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, VALID_REGION_ID, Widget.class.getName(), ModelPermissionEvaluator.Permission.CREATE), is(false));
         verify(mockAuthentication);
-        verify(mockRegionRepository);
+        verify(mockWidgetRepository);
     }
 
     @Test
-    public void testHasPermission_4args_update_isRegionOwner_withRaveSecurityContextObject() {
+    public void testHasPermission_4args_update_isWidgetOwner_withRaveSecurityContextObject() {
         RaveSecurityContext raveSecurityContext = new RaveSecurityContext(VALID_USER_ID, "org.apache.rave.portal.model.User");
 
         expect(mockAuthentication.getPrincipal()).andReturn(user);
         replay(mockAuthentication);
-        assertThat(defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, raveSecurityContext, Region.class.getName(), ModelPermissionEvaluator.Permission.UPDATE), is(true));
+        assertThat(defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, raveSecurityContext, Widget.class.getName(), ModelPermissionEvaluator.Permission.UPDATE), is(true));
         verify(mockAuthentication);
     }
 
     @Test(expected=IllegalArgumentException.class)
-    public void testHasPermission_4args_update_isRegionOwner_withInvalidRaveSecurityContextType() {
+    public void testHasPermission_4args_update_isWidgetOwner_withInvalidRaveSecurityContextType() {
         RaveSecurityContext raveSecurityContext = new RaveSecurityContext(VALID_USER_ID, "java.lang.String");
 
         expect(mockAuthentication.getPrincipal()).andReturn(user);
         replay(mockAuthentication);
-        defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, raveSecurityContext, Region.class.getName(), ModelPermissionEvaluator.Permission.UPDATE);
+        defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, raveSecurityContext, Widget.class.getName(), ModelPermissionEvaluator.Permission.UPDATE);
         verify(mockAuthentication);
     }
 
     @Test(expected=IllegalArgumentException.class)
-    public void testHasPermission_4args_update_isRegionOwner_withUnknownRaveSecurityContextType() {
+    public void testHasPermission_4args_update_isWidgetOwner_withUnknownRaveSecurityContextType() {
         RaveSecurityContext raveSecurityContext = new RaveSecurityContext(VALID_USER_ID, "foo.bar.DummyClass");
 
         expect(mockAuthentication.getPrincipal()).andReturn(user);
         replay(mockAuthentication);
-        defaultRegionPermissionEvaluator.hasPermission(mockAuthentication, raveSecurityContext, Region.class.getName(), ModelPermissionEvaluator.Permission.UPDATE);
+        defaultWidgetPermissionEvaluator.hasPermission(mockAuthentication, raveSecurityContext, Widget.class.getName(), ModelPermissionEvaluator.Permission.UPDATE);
         verify(mockAuthentication);
     }
 

Modified: incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultWidgetServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultWidgetServiceTest.java?rev=1190019&r1=1190018&r2=1190019&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultWidgetServiceTest.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultWidgetServiceTest.java Thu Oct 27 20:51:44 2011
@@ -32,43 +32,35 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
-import static junit.framework.Assert.assertTrue;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.CoreMatchers.sameInstance;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertThat;
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.*;
 
 /**
  * Test for {@link DefaultWidgetService}
  */
 public class DefaultWidgetServiceTest {
 
-    private WidgetService service;
-    private WidgetRepository repository;
+    private WidgetService widgetService;
+    private WidgetRepository widgetRepository;
 
     @Before
     public void setup() {
-        repository = createNiceMock(WidgetRepository.class);
-        service = new DefaultWidgetService(repository);
+        widgetRepository = createMock(WidgetRepository.class);        
+        widgetService = new DefaultWidgetService(widgetRepository);
     }
 
     @Test
     public void getAvailableWidgets() {
         List<Widget> widgets = new ArrayList<Widget>();
-        expect(repository.getCountAll()).andReturn(1);
-        expect(repository.getAll()).andReturn(widgets);
-        replay(repository);
+        expect(widgetRepository.getCountAll()).andReturn(1);
+        expect(widgetRepository.getAll()).andReturn(widgets);
+        replay(widgetRepository);
 
-        List<Widget> result = service.getAllWidgets().getResultSet();
+        List<Widget> result = widgetService.getAllWidgets().getResultSet();
         assertThat(result, is(sameInstance(widgets)));
+        
+        verify(widgetRepository);
     }
 
     @Test
@@ -79,14 +71,14 @@ public class DefaultWidgetServiceTest {
         widgets.add(widget1);
         widgets.add(widget2);
         final int pageSize = 10;
-        expect(repository.getCountAll()).andReturn(1);
-        expect(repository.getLimitedList(0, pageSize)).andReturn(widgets);
-        replay(repository);
+        expect(widgetRepository.getCountAll()).andReturn(1);
+        expect(widgetRepository.getLimitedList(0, pageSize)).andReturn(widgets);
+        replay(widgetRepository);
 
-        SearchResult<Widget> result = service.getLimitedListOfWidgets(0, pageSize);
+        SearchResult<Widget> result = widgetService.getLimitedListOfWidgets(0, pageSize);
         assertEquals(pageSize, result.getPageSize());
         assertSame(widgets, result.getResultSet());
-
+        verify(widgetRepository);
     }
 
     @Test
@@ -99,24 +91,25 @@ public class DefaultWidgetServiceTest {
         widgets.add(widget1);
         widgets.add(widget2);
         final int pageSize = 10;
-        expect(repository.getCountByStatus(WidgetStatus.PUBLISHED)).andReturn(1);
-        expect(repository.getByStatus(WidgetStatus.PUBLISHED, 0, pageSize)).andReturn(widgets);
-        replay(repository);
+        expect(widgetRepository.getCountByStatus(WidgetStatus.PUBLISHED)).andReturn(1);
+        expect(widgetRepository.getByStatus(WidgetStatus.PUBLISHED, 0, pageSize)).andReturn(widgets);
+        replay(widgetRepository);
 
-        SearchResult<Widget> result = service.getPublishedWidgets(0, pageSize);
+        SearchResult<Widget> result = widgetService.getPublishedWidgets(0, pageSize);
         assertEquals(pageSize, result.getPageSize());
         assertSame(widgets, result.getResultSet());
+        verify(widgetRepository);
     }
 
     @Test
     public void getWidget() {
         Widget w = new Widget();
-        expect(repository.get(1L)).andReturn(w);
-        replay(repository);
+        expect(widgetRepository.get(1L)).andReturn(w);
+        replay(widgetRepository);
 
-        Widget result = service.getWidget(1L);
+        Widget result = widgetService.getWidget(1L);
         assertThat(result, is(sameInstance(w)));
-
+        verify(widgetRepository);
     }
 
     @Test
@@ -130,14 +123,15 @@ public class DefaultWidgetServiceTest {
         List<Widget> widgets = new ArrayList<Widget>();
         widgets.add(widget);
 
-        expect(repository.getCountFreeTextSearch(searchTerm)).andReturn(totalResults);
-        expect(repository.getByFreeTextSearch(searchTerm, offset, pageSize)).andReturn(widgets);
-        replay(repository);
+        expect(widgetRepository.getCountFreeTextSearch(searchTerm)).andReturn(totalResults);
+        expect(widgetRepository.getByFreeTextSearch(searchTerm, offset, pageSize)).andReturn(widgets);
+        replay(widgetRepository);
 
-        SearchResult<Widget> result = service.getWidgetsByFreeTextSearch(searchTerm, offset, pageSize);
+        SearchResult<Widget> result = widgetService.getWidgetsByFreeTextSearch(searchTerm, offset, pageSize);
         assertEquals(widget, result.getResultSet().get(0));
         assertEquals(totalResults, result.getTotalResults());
         assertEquals(pageSize, result.getPageSize());
+        verify(widgetRepository);
     }
 
 
@@ -153,17 +147,18 @@ public class DefaultWidgetServiceTest {
         List<Widget> widgets = new ArrayList<Widget>();
         widgets.add(widget);
 
-        expect(repository.getCountByStatusAndTypeAndFreeText(WidgetStatus.PUBLISHED, null, searchTerm))
+        expect(widgetRepository.getCountByStatusAndTypeAndFreeText(WidgetStatus.PUBLISHED, null, searchTerm))
                 .andReturn(totalResults);
-        expect(repository.getByStatusAndTypeAndFreeTextSearch(WidgetStatus.PUBLISHED, null, searchTerm,
+        expect(widgetRepository.getByStatusAndTypeAndFreeTextSearch(WidgetStatus.PUBLISHED, null, searchTerm,
                 offset, pageSize)).andReturn(widgets);
-        replay(repository);
+        replay(widgetRepository);
 
-        SearchResult<Widget> result = service.getPublishedWidgetsByFreeTextSearch(searchTerm,
+        SearchResult<Widget> result = widgetService.getPublishedWidgetsByFreeTextSearch(searchTerm,
                 offset, pageSize);
         assertEquals(widget, result.getResultSet().get(0));
         assertEquals(totalResults, result.getTotalResults());
         assertEquals(pageSize, result.getPageSize());
+        verify(widgetRepository);
     }
 
     @Test
@@ -180,28 +175,29 @@ public class DefaultWidgetServiceTest {
         List<Widget> widgets = new ArrayList<Widget>();
         widgets.add(widget);
 
-        expect(repository.getCountByStatusAndTypeAndFreeText(WidgetStatus.PUBLISHED, type, searchTerm))
+        expect(widgetRepository.getCountByStatusAndTypeAndFreeText(WidgetStatus.PUBLISHED, type, searchTerm))
                 .andReturn(totalResults);
-        expect(repository.getByStatusAndTypeAndFreeTextSearch(WidgetStatus.PUBLISHED, type, searchTerm,
+        expect(widgetRepository.getByStatusAndTypeAndFreeTextSearch(WidgetStatus.PUBLISHED, type, searchTerm,
                 offset, pageSize)).andReturn(widgets);
-        replay(repository);
+        replay(widgetRepository);
 
-        SearchResult<Widget> result = service.getWidgetsBySearchCriteria(searchTerm, type,
+        SearchResult<Widget> result = widgetService.getWidgetsBySearchCriteria(searchTerm, type,
                 WidgetStatus.PUBLISHED.toString(), offset, pageSize);
         assertEquals(widget, result.getResultSet().get(0));
         assertEquals(totalResults, result.getTotalResults());
         assertEquals(pageSize, result.getPageSize());
+        verify(widgetRepository);
     }
 
 
     @Test
     public void getWidget_null() {
-        expect(repository.get(1L)).andReturn(null);
-        replay(repository);
+        expect(widgetRepository.get(1L)).andReturn(null);
+        replay(widgetRepository);
 
-        Widget result = service.getWidget(1L);
+        Widget result = widgetService.getWidget(1L);
         assertThat(result, is(nullValue()));
-
+        verify(widgetRepository);
     }
 
     @Test
@@ -210,27 +206,29 @@ public class DefaultWidgetServiceTest {
                 "http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/hamster.xml";
         Widget widget = new Widget();
         widget.setUrl(widgetUrl);
-        expect(repository.getByUrl(widgetUrl)).andReturn(widget);
-        replay(repository);
+        expect(widgetRepository.getByUrl(widgetUrl)).andReturn(widget);
+        replay(widgetRepository);
 
-        Widget result = service.getWidgetByUrl(widgetUrl);
+        Widget result = widgetService.getWidgetByUrl(widgetUrl);
         assertNotNull(result);
         assertEquals(result.getUrl(), widgetUrl);
+        verify(widgetRepository);
     }
 
     @Test
     public void registerNewWidget() {
-        final String widgetUrl =
-                "http://example.com/newwidget.xml";
+        final String widgetUrl = "http://example.com/newwidget.xml";
         Widget widget = new Widget();
         widget.setUrl(widgetUrl);
-        expect(repository.getByUrl(widgetUrl)).andReturn(null);
-        expect(repository.save(widget)).andReturn(widget);
-        replay(repository);
+        expect(widgetRepository.getByUrl(widgetUrl)).andReturn(null);
+        expect(widgetRepository.save(widget)).andReturn(widget);
+        replay(widgetRepository);
 
-        Widget savedWidget = service.registerNewWidget(widget);
+        Widget savedWidget = widgetService.registerNewWidget(widget);
         assertNotNull(savedWidget);
         assertEquals(widget.getEntityId(), savedWidget.getEntityId());
+        
+        verify(widgetRepository);
     }
 
     @Test
@@ -239,11 +237,12 @@ public class DefaultWidgetServiceTest {
                 "http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/hamster.xml";
         Widget widget = new Widget();
         widget.setUrl(widgetUrl);
-        expect(repository.getByUrl(widgetUrl)).andReturn(widget);
-        replay(repository);
+        expect(widgetRepository.getByUrl(widgetUrl)).andReturn(widget);
+        replay(widgetRepository);
 
-        Widget noWidget = service.registerNewWidget(widget);
+        Widget noWidget = widgetService.registerNewWidget(widget);
         assertNull("Widget already exists", noWidget);
+        verify(widgetRepository);
     }
 
     @Test
@@ -252,31 +251,31 @@ public class DefaultWidgetServiceTest {
                 "http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/hamster.xml";
         Widget widget = new Widget();
         widget.setUrl(widgetUrl);
-        expect(repository.save(widget)).andReturn(widget).once();
-        replay(repository);
+        expect(widgetRepository.save(widget)).andReturn(widget).once();
+        replay(widgetRepository);
 
-        service.updateWidget(widget);
-        verify(repository);
+        widgetService.updateWidget(widget);
+        verify(widgetRepository);
 
         assertTrue("Save called", true);
     }
 
     @Test
     public void widgetStatistics() {
-        expect(repository.getWidgetStatistics(1L, 1L)).andReturn(new WidgetStatistics());
-        replay(repository);
+        expect(widgetRepository.getWidgetStatistics(1L, 1L)).andReturn(new WidgetStatistics());
+        replay(widgetRepository);
 
-        service.getWidgetStatistics(1L, 1L);
-        verify(repository);
+        widgetService.getWidgetStatistics(1L, 1L);
+        verify(widgetRepository);
     }
 
 
     @Test
     public void allWidgetStatistics() {
-        expect(repository.getAllWidgetStatistics(1L)).andReturn(new HashMap<Long, WidgetStatistics>());
-        replay(repository);
+        expect(widgetRepository.getAllWidgetStatistics(1L)).andReturn(new HashMap<Long, WidgetStatistics>());
+        replay(widgetRepository);
 
-        service.getAllWidgetStatistics(1L);
-        verify(repository);
+        widgetService.getAllWidgetStatistics(1L);
+        verify(widgetRepository);
     }
 }

Modified: incubator/rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql?rev=1190019&r1=1190018&r2=1190019&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql Thu Oct 27 20:51:44 2011
@@ -155,75 +155,75 @@ UPDATE RAVE_PORTAL_SEQUENCES SET seq_cou
 --- gadget data ---
 -- wikipedia widget
 set @wikipedia_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, description, author, widget_status)
-values(@wikipedia_widget_id, 'Wikipedia','http://www.widget-dico.com/wikipedia/google/wikipedia.xml', 'OpenSocial', 'A Wikipedia Search and Go widget. Language choice.', 'WidgetMe', 'PUBLISHED');
+insert into widget (entity_id, title, url, type, description, author, widget_status, owner_id)
+values(@wikipedia_widget_id, 'Wikipedia','http://www.widget-dico.com/wikipedia/google/wikipedia.xml', 'OpenSocial', 'A Wikipedia Search and Go widget. Language choice.', 'WidgetMe', 'PUBLISHED', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- translate widget
 set @translate_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, description, author, widget_status)
-values(@translate_widget_id, 'Translate Gadget', 'http://www.gstatic.com/ig/modules/dictionary/dictionary.xml','OpenSocial' , 'Google Translation gadget.', 'Google Taiwan', 'PUBLISHED');
+insert into widget (entity_id, title, url, type, description, author, widget_status, owner_id)
+values(@translate_widget_id, 'Translate Gadget', 'http://www.gstatic.com/ig/modules/dictionary/dictionary.xml','OpenSocial' , 'Google Translation gadget.', 'Google Taiwan', 'PUBLISHED', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- nytimes widget
 set @nyt_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, widget_status)
-values(@nyt_widget_id, 'NYTimes.com - Top Stories', 'http://widgets.nytimes.com/packages/html/igoogle/topstories.xml', 'OpenSocial', 'PUBLISHED');
+insert into widget (entity_id, title, url, type, widget_status, owner_id)
+values(@nyt_widget_id, 'NYTimes.com - Top Stories', 'http://widgets.nytimes.com/packages/html/igoogle/topstories.xml', 'OpenSocial', 'PUBLISHED', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- google tabbed news widget
 set @tabnews_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, widget_status)
-values(@tabnews_widget_id, 'Google News Gadget', 'http://www.gstatic.com/ig/modules/tabnews/tabnews.xml', 'OpenSocial', 'PUBLISHED');
+insert into widget (entity_id, title, url, type, widget_status, owner_id)
+values(@tabnews_widget_id, 'Google News Gadget', 'http://www.gstatic.com/ig/modules/tabnews/tabnews.xml', 'OpenSocial', 'PUBLISHED', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- hamster widget
 set @hamster_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, widget_status, thumbnail_url)
-values(@hamster_widget_id, 'Pet Hamster', 'http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/hamster.xml', 'OpenSocial', 'PUBLISHED', 'http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/hamsterThumb.png');
+insert into widget (entity_id, title, url, type, widget_status, thumbnail_url, owner_id)
+values(@hamster_widget_id, 'Pet Hamster', 'http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/hamster.xml', 'OpenSocial', 'PUBLISHED', 'http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/hamsterThumb.png', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- another hamster widget
 set @another_hamster_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, description, author, widget_status, thumbnail_url, screenshot_url)
-values(@another_hamster_widget_id, 'Herbie Hamster Virtual Pet', 'http://hosting.gmodules.com/ig/gadgets/file/109548057311228444554/hamster.xml', 'OpenSocial', 'A cute little hamster for you to feed and look after. Watch him follow your cursor around. Click on the more tab to treat him to a strawberry. Click him then put him on the wheel and watch him play! ***NEW: make Herbie hamster your very own!', 'Naj', 'PUBLISHED', 'http://sites.google.com/site/najartsist/pets-1/herbiet.png', 'http://sites.google.com/site/najartsist/herbie-hamster/herbie.png');
+insert into widget (entity_id, title, url, type, description, author, widget_status, thumbnail_url, screenshot_url, owner_id)
+values(@another_hamster_widget_id, 'Herbie Hamster Virtual Pet', 'http://hosting.gmodules.com/ig/gadgets/file/109548057311228444554/hamster.xml', 'OpenSocial', 'A cute little hamster for you to feed and look after. Watch him follow your cursor around. Click on the more tab to treat him to a strawberry. Click him then put him on the wheel and watch him play! ***NEW: make Herbie hamster your very own!', 'Naj', 'PUBLISHED', 'http://sites.google.com/site/najartsist/pets-1/herbiet.png', 'http://sites.google.com/site/najartsist/herbie-hamster/herbie.png', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- slideshare widget
 set @gifts_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, widget_status)
-values(@gifts_widget_id, 'Gifts', 'http://opensocial-resources.googlecode.com/svn/samples/tutorial/tags/api-0.8/gifts_1_friends.xml', 'OpenSocial', 'PUBLISHED');
+insert into widget (entity_id, title, url, type, widget_status, owner_id)
+values(@gifts_widget_id, 'Gifts', 'http://opensocial-resources.googlecode.com/svn/samples/tutorial/tags/api-0.8/gifts_1_friends.xml', 'OpenSocial', 'PUBLISHED', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- demo widgets from rave-demos
 -- CTSS resource google map
 set @ctss_resources_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, description, author, widget_status, thumbnail_url, screenshot_url)
-values(@ctss_resources_widget_id, 'List of CTSS Resources - Map View', 'http://localhost:8080/demogadgets/CTSSResourcesMapView.xml', 'OpenSocial', 'This is a gadget developed for Teragrid - OGCE project. Used Google gadgets API to retrieve the information from the Information Services REST Web Service and display the information using Google Maps API. This is a list of available CTSS resources and its details', 'Suresh Deivasigamani', 'PUBLISHED', 'http://img695.imageshack.us/img695/2726/ctssresourcesmapviewscr.png', 'http://img704.imageshack.us/img704/444/ctssresourcesmapview.png');
+insert into widget (entity_id, title, url, type, description, author, widget_status, thumbnail_url, screenshot_url, owner_id)
+values(@ctss_resources_widget_id, 'List of CTSS Resources - Map View', 'http://localhost:8080/demogadgets/CTSSResourcesMapView.xml', 'OpenSocial', 'This is a gadget developed for Teragrid - OGCE project. Used Google gadgets API to retrieve the information from the Information Services REST Web Service and display the information using Google Maps API. This is a list of available CTSS resources and its details', 'Suresh Deivasigamani', 'PUBLISHED', 'http://img695.imageshack.us/img695/2726/ctssresourcesmapviewscr.png', 'http://img704.imageshack.us/img704/444/ctssresourcesmapview.png', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- Twitter Gadget
 set @twitter_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, description, author, widget_status, thumbnail_url, screenshot_url)
-values(@twitter_widget_id, 'Twitter', 'http://localhost:8080/demogadgets/twitter.xml', 'OpenSocial', 'Fully functional, lightweight, AJAX-based twitter user interface with many configuration options including user specified auto-refresh rate, full timeline, pagination, and more.  Control display elements such as user thumbnails, date stamps, and post source.  Specify gadget size based on availble screen footprint, even incorporate into your Gmail account.  Insert symbols, dingbats and emoticons into your tweets using the TwitterGadget Symbols pulldown menu.', 'LOGIKA Corporation', 'PUBLISHED', 'http://www.twittergadget.com/images/thumbnail2.png', 'http://www.twittergadget.com/images/thumbnail2.png');
+insert into widget (entity_id, title, url, type, description, author, widget_status, thumbnail_url, screenshot_url, owner_id)
+values(@twitter_widget_id, 'Twitter', 'http://localhost:8080/demogadgets/twitter.xml', 'OpenSocial', 'Fully functional, lightweight, AJAX-based twitter user interface with many configuration options including user specified auto-refresh rate, full timeline, pagination, and more.  Control display elements such as user thumbnails, date stamps, and post source.  Specify gadget size based on availble screen footprint, even incorporate into your Gmail account.  Insert symbols, dingbats and emoticons into your tweets using the TwitterGadget Symbols pulldown menu.', 'LOGIKA Corporation', 'PUBLISHED', 'http://www.twittergadget.com/images/thumbnail2.png', 'http://www.twittergadget.com/images/thumbnail2.png', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- Youtube Gadget
 set @youtube_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, description, author, widget_status, thumbnail_url, screenshot_url)
-values(@youtube_widget_id, 'Youtube', 'http://localhost:8080/demogadgets/youtubesearch.xml', 'OpenSocial', 'A search module, which searches YouTube by tags like Politics News Life Music Family Photography Art Random Travel Personal Religion Movies Business Thoughts Media Humor Culture Poetry Christmas Writing Books Food Friends.', 'David Olsen', 'PUBLISHED', 'http://www.zytu.com/youtube/youtubesearchthumb.png', 'http://www.zytu.com/youtube/youtubesearchscreen.png');
+insert into widget (entity_id, title, url, type, description, author, widget_status, thumbnail_url, screenshot_url, owner_id)
+values(@youtube_widget_id, 'Youtube', 'http://localhost:8080/demogadgets/youtubesearch.xml', 'OpenSocial', 'A search module, which searches YouTube by tags like Politics News Life Music Family Photography Art Random Travel Personal Religion Movies Business Thoughts Media Humor Culture Poetry Christmas Writing Books Food Friends.', 'David Olsen', 'PUBLISHED', 'http://www.zytu.com/youtube/youtubesearchthumb.png', 'http://www.zytu.com/youtube/youtubesearchscreen.png', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- View information
 set @gadgetview_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, widget_status)
-values(@gadgetview_widget_id, 'Gadget View Type', 'http://localhost:8080/demogadgets/canvas-nav.xml', 'OpenSocial', 'PUBLISHED');
+insert into widget (entity_id, title, url, type, widget_status, owner_id)
+values(@gadgetview_widget_id, 'Gadget View Type', 'http://localhost:8080/demogadgets/canvas-nav.xml', 'OpenSocial', 'PUBLISHED', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- View information
 set @user_prefs_demo_widget_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES WHERE seq_name = @widget_seq);
-insert into widget (entity_id, title, url, type, widget_status, description, author)
-values(@user_prefs_demo_widget_id, 'User Prefs Demo', 'http://localhost:8080/demogadgets/user_prefs_demo.xml', 'OpenSocial', 'PUBLISHED', 'An example gadget which demos some of the different capabilities of user preferences.', 'Anthony Carlucci');
+insert into widget (entity_id, title, url, type, widget_status, description, author, owner_id)
+values(@user_prefs_demo_widget_id, 'User Prefs Demo', 'http://localhost:8080/demogadgets/user_prefs_demo.xml', 'OpenSocial', 'PUBLISHED', 'An example gadget which demos some of the different capabilities of user preferences.', 'Anthony Carlucci', @user_id_1);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @widget_seq;
 
 -- end widget data ----
@@ -753,4 +753,4 @@ insert into granted_authority (entity_id
 values (@next_authority_id, 'administrator');
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = @granted_authority_seq;
 
--- end authorities
\ No newline at end of file
+-- end authorities

Modified: incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java?rev=1190019&r1=1190018&r2=1190019&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java Thu Oct 27 20:51:44 2011
@@ -143,12 +143,14 @@ public class WidgetStoreController {
     @RequestMapping(method = RequestMethod.POST, value = "widget/add")
     public String viewAddWidgetResult(@ModelAttribute Widget widget, BindingResult results,
                                       Model model) {
+        User user = userService.getAuthenticatedUser();                                     
         widgetValidator.validate(widget, results);
         if (results.hasErrors()) {
             model.addAttribute(ModelKeys.WIDGET, widget);
             return ViewNames.ADD_WIDGET_FORM;
         }
         widget.setWidgetStatus(WidgetStatus.PREVIEW);
+        widget.setOwner(user);
 
         final Widget storedWidget = widgetService.registerNewWidget(widget);
         if (storedWidget == null) {
@@ -156,9 +158,8 @@ public class WidgetStoreController {
             model.addAttribute(ModelKeys.WIDGET, widget);
             return ViewNames.ADD_WIDGET_FORM;
         }
-
-        User user = userService.getAuthenticatedUser();
-        model.addAttribute(ModelKeys.WIDGET, storedWidget);
+        
+        model.addAttribute(ModelKeys.WIDGET, storedWidget);       
         model.addAttribute(ModelKeys.WIDGET_STATISTICS, widgetService.getWidgetStatistics(storedWidget.getEntityId(), user.getEntityId()));
         return ViewNames.WIDGET;
     }

Modified: incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/WidgetStoreControllerTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/WidgetStoreControllerTest.java?rev=1190019&r1=1190018&r2=1190019&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/WidgetStoreControllerTest.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/WidgetStoreControllerTest.java Thu Oct 27 20:51:44 2011
@@ -20,6 +20,8 @@
 package org.apache.rave.portal.web.controller;
 
 
+import java.util.HashMap;
+import org.apache.rave.portal.model.util.WidgetStatistics;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.model.Widget;
 import org.apache.rave.portal.model.WidgetStatus;
@@ -41,18 +43,12 @@ import java.util.List;
 import java.util.Map;
 
 import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertNull;
-import static junit.framework.Assert.assertTrue;
-import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.*;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.sameInstance;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.*;
 
 
 /**
@@ -64,14 +60,23 @@ public class WidgetStoreControllerTest {
     private static final long REFERRER_ID = 35L;
     private WidgetStoreController controller;
     private WidgetService widgetService;
+    
+    private User validUser;
+    private WidgetStatistics widgetStatistics;
+    private Map<Long, WidgetStatistics> allWidgetStatisticsMap;
 
     @Before
     public void setup() {
-        widgetService = createNiceMock(WidgetService.class);
-        UserService userService = createNiceMock(UserService.class);
-        User user = new User();
-        user.setEntityId(1L);
-        expect(userService.getAuthenticatedUser()).andReturn(user);
+        validUser = new User();
+        validUser.setEntityId(1L);
+        widgetStatistics = new WidgetStatistics();
+        
+        allWidgetStatisticsMap = new HashMap<Long, WidgetStatistics>();
+        allWidgetStatisticsMap.put(WIDGET_ID, widgetStatistics);
+        
+        widgetService = createMock(WidgetService.class);
+        UserService userService = createMock(UserService.class);        
+        expect(userService.getAuthenticatedUser()).andReturn(validUser);
         replay(userService);
         NewWidgetValidator widgetValidator = new NewWidgetValidator();
         controller = new WidgetStoreController(widgetService, widgetValidator, userService);
@@ -85,6 +90,7 @@ public class WidgetStoreControllerTest {
         SearchResult<Widget> emptyResult = new SearchResult<Widget>(widgets, 0);
 
         expect(widgetService.getPublishedWidgets(0, 10)).andReturn(emptyResult);
+        expect(widgetService.getAllWidgetStatistics(validUser.getEntityId())).andReturn(allWidgetStatisticsMap);
         replay(widgetService);
 
         String view = controller.view(model, REFERRER_ID, 0);
@@ -102,6 +108,7 @@ public class WidgetStoreControllerTest {
         Widget w = new Widget(1L, "http://example.com/widget.xml");
 
         expect(widgetService.getWidget(WIDGET_ID)).andReturn(w);
+        expect(widgetService.getWidgetStatistics(WIDGET_ID, validUser.getEntityId())).andReturn(widgetStatistics);
         replay(widgetService);
 
         String view = controller.viewWidget(model, WIDGET_ID, REFERRER_ID);
@@ -129,8 +136,8 @@ public class WidgetStoreControllerTest {
         SearchResult<Widget> result = new SearchResult<Widget>(widgets, totalResults);
         result.setPageSize(pagesize);
 
-        expect(widgetService.getPublishedWidgetsByFreeTextSearch(searchTerm, offset, pagesize))
-                .andReturn(result);
+        expect(widgetService.getPublishedWidgetsByFreeTextSearch(searchTerm, offset, pagesize)).andReturn(result);
+        expect(widgetService.getAllWidgetStatistics(validUser.getEntityId())).andReturn(allWidgetStatisticsMap);
         replay(widgetService);
 
         String view = controller.viewSearchResult(model, REFERRER_ID, searchTerm, offset);
@@ -165,6 +172,7 @@ public class WidgetStoreControllerTest {
         final BindingResult errors = new BeanPropertyBindingResult(widget, "widget");
 
         expect(widgetService.registerNewWidget(widget)).andReturn(widget);
+        expect(widgetService.getWidgetStatistics(WIDGET_ID, validUser.getEntityId())).andReturn(widgetStatistics);
         replay(widgetService);
         String view = controller.viewAddWidgetResult(widget, errors, model);
         verify(widgetService);
@@ -186,7 +194,7 @@ public class WidgetStoreControllerTest {
         widget.setType("OpenSocial");
         final BindingResult errors = new BeanPropertyBindingResult(widget, "widget");
 
-        expect(widgetService.registerNewWidget(widget)).andReturn(null);
+        expect(widgetService.registerNewWidget(widget)).andReturn(null);        
         replay(widgetService);
         String view = controller.viewAddWidgetResult(widget, errors, model);
         verify(widgetService);