You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by mf...@apache.org on 2011/07/12 17:00:10 UTC

svn commit: r1145616 - in /incubator/rave/trunk/rave-portal/src: main/java/org/apache/rave/portal/model/ main/java/org/apache/rave/portal/repository/ main/java/org/apache/rave/portal/repository/impl/ main/java/org/apache/rave/portal/service/ main/java/...

Author: mfranklin
Date: Tue Jul 12 15:00:09 2011
New Revision: 1145616

URL: http://svn.apache.org/viewvc?rev=1145616&view=rev
Log:
Simplified repository layer (Supports RAVE-58)

Added:
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/BasicEntity.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/AbstractJpaRepository.java
    incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/AbstractJpaRepositoryTest.java
Modified:
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Page.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/PageLayout.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Region.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidget.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidgetPreference.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/User.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Widget.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/Repository.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaPageLayoutRepository.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaRegionRepository.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaRegionWidgetRepository.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaUserRepository.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaWidgetRepository.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/PageService.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/rpc/PageApi.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/controller/HomeController.java
    incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java
    incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.jsp
    incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/model/UserTest.java
    incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaPageRepositoryTest.java
    incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaRegionRepositoryTest.java
    incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaUserRepositoryTest.java
    incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/service/PageServiceTest.java
    incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/web/api/rpc/PageApiTest.java

Added: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/BasicEntity.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/BasicEntity.java?rev=1145616&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/BasicEntity.java (added)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/BasicEntity.java Tue Jul 12 15:00:09 2011
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.rave.portal.model;
+
+/**
+ * Defines common properties implemented by Entities in the model
+ */
+public interface BasicEntity {
+    Long getId();
+    void setId(Long id);
+}

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Page.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Page.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Page.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Page.java Tue Jul 12 15:00:09 2011
@@ -29,10 +29,10 @@ import java.util.List;
 @Table(name="page")
 @SequenceGenerator(name="pageIdSeq", sequenceName = "page_id_seq")
 @NamedQueries({
-        @NamedQuery(name = "Page.getByUserId", query="SELECT p FROM Page p WHERE p.owner.userId = :userId")
+        @NamedQuery(name = "Page.getByUserId", query="SELECT p FROM Page p WHERE p.owner.id = :userId")
 })
 @Access(AccessType.FIELD)
-public class Page {
+public class Page implements BasicEntity{
     @Id @Column(name="id")
     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pageIdSeq")
     private Long id;

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/PageLayout.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/PageLayout.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/PageLayout.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/PageLayout.java Tue Jul 12 15:00:09 2011
@@ -31,7 +31,7 @@ import javax.persistence.*;
     @NamedQuery(name="PageLayout.getByLayoutCode", query = "select pl from PageLayout pl where pl.code = :code")
 })
 
-public class PageLayout {
+public class PageLayout implements BasicEntity {
     @Id @Column(name="id")
     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pageLayoutIdSeq")
     private Long id;

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Region.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Region.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Region.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Region.java Tue Jul 12 15:00:09 2011
@@ -28,7 +28,7 @@ import java.util.List;
 @Table(name="region")
 @SequenceGenerator(name="regionIdSeq", sequenceName = "region_id_seq")
 @Access(AccessType.FIELD)
-public class Region {
+public class Region implements BasicEntity{
     @Id @Column(name="id")
     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "regionIdSeq")
     private Long id;

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidget.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidget.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidget.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidget.java Tue Jul 12 15:00:09 2011
@@ -27,7 +27,7 @@ import java.util.List;
 @Entity
 @Table(name = "region_widget")
 @SequenceGenerator(name = "regionWidgetIdSeq", sequenceName = "region_widget_id_seq")
-public class RegionWidget {
+public class RegionWidget implements BasicEntity{
     @Id
     @Column(name = "id")
     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "regionWidgetIdSeq")

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidgetPreference.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidgetPreference.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidgetPreference.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/RegionWidgetPreference.java Tue Jul 12 15:00:09 2011
@@ -29,7 +29,7 @@ import javax.xml.bind.annotation.XmlRoot
 @Table(name = "region_widget_preference")
 @SequenceGenerator(name = "regionWidgetPrefIdSeq", sequenceName = "region_widget_pref_id_seq")
 @XmlRootElement
-public class RegionWidgetPreference {
+public class RegionWidgetPreference implements BasicEntity{
     @Id
     @Column(name = "id")
     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "regionWidgetPrefIdSeq")

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/User.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/User.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/User.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/User.java Tue Jul 12 15:00:09 2011
@@ -35,10 +35,10 @@ import java.util.Collection;
 @NamedQueries({
     @NamedQuery(name="User.getByUsername", query = "select u from User u where u.username = :username")
 })
-public class User implements UserDetails {
+public class User implements UserDetails, BasicEntity {
     @Id @Column(name = "user_id")
     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "userIdSeq")
-    private Long userId;
+    private Long id;
 
     @Basic @Column(name = "username")
     private String username;
@@ -58,12 +58,12 @@ public class User implements UserDetails
     public User() {
     }
 
-    public User(Long userId) {
-        this.userId = userId;
+    public User(Long id) {
+        this.id = id;
     }
 
-    public User(Long userId, String username) {
-        this.userId = userId;
+    public User(Long id, String username) {
+        this.id = id;
         this.username = username;
     }
 
@@ -72,12 +72,12 @@ public class User implements UserDetails
      *
      * @return The unique identifier for this user.
      */
-    public Long getUserId() {
-        return userId;
+    public Long getId() {
+        return id;
     }
 
-    public void setUserId(Long userId) {
-        this.userId = userId;
+    public void setId(Long id) {
+        this.id = id;
     }
 
     //TODO: Add GrantedAuthorities to user

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Widget.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Widget.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Widget.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/model/Widget.java Tue Jul 12 15:00:09 2011
@@ -29,7 +29,7 @@ import javax.persistence.*;
 @NamedQueries({
         @NamedQuery(name = "Widget.getAll", query = "SELECT w from Widget w")
 })
-public class Widget {
+public class Widget implements BasicEntity{
     @Id @Column(name="id")
     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "widgetIdSeq")
     private Long id;

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/Repository.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/Repository.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/Repository.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/Repository.java Tue Jul 12 15:00:09 2011
@@ -37,4 +37,11 @@ public interface Repository<T> {
      * @return the persisted item
      */
     T save(T item);
+
+    /**
+     * Deletes the given item from the persistence context
+     *
+     * @param item the item to delete
+     */
+    void delete(T item);
 }

Added: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/AbstractJpaRepository.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/AbstractJpaRepository.java?rev=1145616&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/AbstractJpaRepository.java (added)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/AbstractJpaRepository.java Tue Jul 12 15:00:09 2011
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.rave.portal.repository.impl;
+
+import org.apache.rave.portal.model.BasicEntity;
+import org.apache.rave.portal.repository.Repository;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import static org.apache.rave.portal.repository.impl.util.JpaUtil.saveOrUpdate;
+
+/**
+ * Provides generic implementations of {@link org.apache.rave.portal.repository.Repository} methods
+ */
+public abstract class AbstractJpaRepository<T extends BasicEntity> implements Repository<T> {
+
+    @PersistenceContext
+    protected EntityManager manager;
+
+    private final Class<T> type;
+
+    protected AbstractJpaRepository(Class<T> type) {
+        this.type = type;
+    }
+
+    @Override
+    public void delete(T item) {
+        manager.remove(item);
+    }
+
+    @Override
+    public T save(T item) {
+        return saveOrUpdate(item.getId(), manager, item);
+    }
+
+    @Override
+    public T get(long id) {
+        return manager.find(type, id);
+    }
+}

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaPageLayoutRepository.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaPageLayoutRepository.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaPageLayoutRepository.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaPageLayoutRepository.java Tue Jul 12 15:00:09 2011
@@ -35,16 +35,12 @@ import static org.apache.rave.portal.rep
 /**
  */
 @Repository
-public class JpaPageLayoutRepository implements PageLayoutRepository{
+public class JpaPageLayoutRepository extends AbstractJpaRepository<PageLayout> implements PageLayoutRepository{
 
-    @PersistenceContext
-    private EntityManager manager;
-
-    @Override
-    public PageLayout get(long layoutId) {
-        return manager.find(PageLayout.class, layoutId);
+    public JpaPageLayoutRepository() {
+        super(PageLayout.class);
     }
-	 
+
 	 @Override
 	 public PageLayout getByPageLayoutCode(String codename){
 		  TypedQuery<PageLayout>query = manager.createNamedQuery("PageLayout.getByLayoutCode",PageLayout.class);
@@ -52,8 +48,4 @@ public class JpaPageLayoutRepository imp
 		  return getSingleResult(query.getResultList());
 	 }
 
-    @Override
-    public PageLayout save(PageLayout pageLayout) {
-		  return saveOrUpdate(pageLayout.getId(),manager,pageLayout);
-    }
 }

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java Tue Jul 12 15:00:09 2011
@@ -32,10 +32,11 @@ import java.util.List;
 import static org.apache.rave.portal.repository.impl.util.JpaUtil.saveOrUpdate;
 
 @Repository
-public class JpaPageRepository implements PageRepository {
+public class JpaPageRepository extends AbstractJpaRepository<Page> implements PageRepository{
 
-    @PersistenceContext
-    private EntityManager manager;
+    public JpaPageRepository() {
+        super(Page.class);
+    }
 
     @Override
     public List<Page> getAllPages(Long userId) {
@@ -43,15 +44,4 @@ public class JpaPageRepository implement
         query.setParameter("userId", userId);
         return query.getResultList();
     }
-
-    @Override
-    public Page get(long pageId) {
-        return manager.find(Page.class, pageId);
-    }
-
-    @Override
-    public Page save(Page item) {
-		  return saveOrUpdate(item.getId(),manager,item);
-		  //        throw new NotImplementedException("Save is not implemented for this repository");
-    }
 }
\ No newline at end of file

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaRegionRepository.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaRegionRepository.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaRegionRepository.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaRegionRepository.java Tue Jul 12 15:00:09 2011
@@ -28,21 +28,9 @@ import javax.persistence.PersistenceCont
 
 import static org.apache.rave.portal.repository.impl.util.JpaUtil.saveOrUpdate;
 
-/**
- *  */
-
 @Repository
-public class JpaRegionRepository implements RegionRepository {
-    @PersistenceContext
-    private EntityManager manager;
-
-    @Override
-    public Region get(long regionId) {
-        return manager.find(Region.class, regionId);
-    }
-
-    @Override
-    public Region save(Region region) {
-        return saveOrUpdate(region.getId(), manager, region);
-    }
+public class JpaRegionRepository extends AbstractJpaRepository<Region> implements RegionRepository {
+  public JpaRegionRepository() {
+      super(Region.class);
+  }
 }

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaRegionWidgetRepository.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaRegionWidgetRepository.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaRegionWidgetRepository.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaRegionWidgetRepository.java Tue Jul 12 15:00:09 2011
@@ -30,20 +30,8 @@ import javax.persistence.PersistenceCont
 import static org.apache.rave.portal.repository.impl.util.JpaUtil.saveOrUpdate;
 
 @Repository
-public class JpaRegionWidgetRepository implements RegionWidgetRepository {
-    @PersistenceContext
-    private EntityManager manager;
-
-    @Override
-    public RegionWidget get(long regionWidgetId) {
-        return manager.find(RegionWidget.class, regionWidgetId);
-    }
-
-    @Override
-    @Transactional
-    public RegionWidget save(RegionWidget regionWidget) {
-        return saveOrUpdate(regionWidget.getId(), manager, regionWidget);
+public class JpaRegionWidgetRepository extends AbstractJpaRepository<RegionWidget> implements RegionWidgetRepository {
+    public JpaRegionWidgetRepository() {
+        super(RegionWidget.class);
     }
-
-
 }
\ No newline at end of file

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaUserRepository.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaUserRepository.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaUserRepository.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaUserRepository.java Tue Jul 12 15:00:09 2011
@@ -19,11 +19,9 @@
 
 package org.apache.rave.portal.repository.impl;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.repository.UserRepository;
 import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
 
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
@@ -35,14 +33,10 @@ import static org.apache.rave.portal.rep
 /**
  */
 @Repository
-public class JpaUserRepository implements UserRepository{
+public class JpaUserRepository extends AbstractJpaRepository<User> implements UserRepository{
 
-    @PersistenceContext
-    private EntityManager manager;
-
-    @Override
-    public User get(long userId) {
-        return manager.find(User.class, userId);
+    public JpaUserRepository() {
+        super(User.class);
     }
 
     @Override
@@ -51,9 +45,4 @@ public class JpaUserRepository implement
         query.setParameter("username", username);
         return getSingleResult(query.getResultList());
     }
-
-    @Override
-    public User save(User user) {
-		  return saveOrUpdate(user.getUserId(),manager,user);
-    }
 }

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaWidgetRepository.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaWidgetRepository.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaWidgetRepository.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/repository/impl/JpaWidgetRepository.java Tue Jul 12 15:00:09 2011
@@ -31,24 +31,15 @@ import javax.persistence.TypedQuery;
 import java.util.List;
 
 @Repository
-public class JpaWidgetRepository implements WidgetRepository{
+public class JpaWidgetRepository extends AbstractJpaRepository<Widget> implements WidgetRepository{
 
-    @PersistenceContext
-    private EntityManager manager;
+    public JpaWidgetRepository() {
+        super(Widget.class);
+    }
 
     @Override
     public List<Widget> getAll() {
         TypedQuery<Widget> query = manager.createNamedQuery("Widget.getAll", Widget.class);
         return query.getResultList();
     }
-
-    @Override
-    public Widget get(long id) {
-        return manager.find(Widget.class, id);
-    }
-
-    @Override
-    public Widget save(Widget item) {
-        throw new NotImplementedException("Save is not implemented for this repository");
-    }
 }

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/PageService.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/PageService.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/PageService.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/PageService.java Tue Jul 12 15:00:09 2011
@@ -54,12 +54,10 @@ public interface PageService {
 
 	 /**
 	  * Deletes a specified widget from the specied page.
-	  * @param widgetId the id of the widget to delete.
-	  * @param regionId the ID of the region containing the widget to delete
-	  * @param pageId the id of the page containing the widget to delete
-	  * @return the updated Region. //TODO need to make sure this is the right return.
+	  *
+      * @param regionWidgetId the id of the region widget to delete.\
 	  */
-	 Region removeWidgetFromPage(long regionWidgetId, long regionId);
+	 void removeWidgetFromPage(long regionWidgetId);
 
 	 /**
 	  * Registers a new page. 

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java Tue Jul 12 15:00:09 2011
@@ -23,10 +23,7 @@ import org.apache.rave.portal.model.Page
 import org.apache.rave.portal.model.Region;
 import org.apache.rave.portal.model.RegionWidget;
 import org.apache.rave.portal.model.Widget;
-import org.apache.rave.portal.repository.PageRepository;
-import org.apache.rave.portal.repository.RegionRepository;
-import org.apache.rave.portal.repository.Repository;
-import org.apache.rave.portal.repository.WidgetRepository;
+import org.apache.rave.portal.repository.*;
 import org.apache.rave.portal.service.PageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -38,12 +35,14 @@ import java.util.List;
 public class DefaultPageService implements PageService {
     private final PageRepository pageRepository;
     private final RegionRepository regionRepository;
+    private final RegionWidgetRepository regionWidgetRepository;
     private final WidgetRepository widgetRepository;
 
     @Autowired
-    public DefaultPageService(PageRepository pageRepository, RegionRepository regionRepository, WidgetRepository widgetRepository) {
+    public DefaultPageService(PageRepository pageRepository, RegionRepository regionRepository, WidgetRepository widgetRepository, RegionWidgetRepository regionWidgetRepository) {
         this.pageRepository = pageRepository;
         this.regionRepository = regionRepository;
+        this.regionWidgetRepository = regionWidgetRepository;
         this.widgetRepository = widgetRepository;
     }
 
@@ -56,7 +55,7 @@ public class DefaultPageService implemen
     @Transactional
     public RegionWidget moveRegionWidget(long regionWidgetId, int newPosition, long toRegion, long fromRegion) {
         Region target = getFromRepository(toRegion, regionRepository);
-        if(toRegion == fromRegion) {
+        if (toRegion == fromRegion) {
             moveWithinRegion(regionWidgetId, newPosition, target);
         } else {
             moveBetweenRegions(regionWidgetId, newPosition, fromRegion, target);
@@ -65,12 +64,16 @@ public class DefaultPageService implemen
         return findRegionWidgetById(regionWidgetId, target.getRegionWidgets());
     }
 
-	 @Override
-	 @Transactional
-	 public Region removeWidgetFromPage(long regionWidgetId, long regionId){
-        Region region = getFromRepository(regionId, regionRepository);
-        return removeWidgetInstance(regionWidgetId, region);
-	 }
+    @Override
+    @Transactional
+    public void removeWidgetFromPage(long regionWidgetId) {
+        RegionWidget widget = getFromRepository(regionWidgetId, regionWidgetRepository);
+        if (widget != null) {
+            regionWidgetRepository.delete(widget);
+        } else {
+            throw new IllegalArgumentException("Region widget with id " + regionWidgetId + " was not found in the repository");
+        }
+    }
 
     @Override
     @Transactional
@@ -81,11 +84,11 @@ public class DefaultPageService implemen
         return createWidgetInstance(widget, region, 0);
     }
 
-	 @Override
-	 @Transactional
-	 public void registerNewPage(Page page) {
-		  pageRepository.save(page);
-	 }
+    @Override
+    @Transactional
+    public void registerNewPage(Page page) {
+        pageRepository.save(page);
+    }
 
     private RegionWidget createWidgetInstance(Widget widget, Region region, int position) {
         RegionWidget regionWidget = new RegionWidget();
@@ -116,17 +119,9 @@ public class DefaultPageService implemen
         target.getRegionWidgets().add(newPosition, widget);
     }
 
-	 private Region removeWidgetInstance(long regionWidgetId, Region region) {
-        RegionWidget regionWidget = findRegionWidgetById(regionWidgetId, region.getRegionWidgets());
-		  region.getRegionWidgets().remove(regionWidget);		
-		  updateRenderSequences(region.getRegionWidgets());
-		  regionRepository.save(region);
-		  return region;
-	 }
-
     private static <T> T getFromRepository(long id, Repository<T> repo) {
         T object = repo.get(id);
-        if(object == null) {
+        if (object == null) {
             throw new IllegalArgumentException("Could not find object of given id in " + repo.getClass().getSimpleName());
         }
         return object;
@@ -134,19 +129,19 @@ public class DefaultPageService implemen
 
     private static void updateRenderSequences(List<RegionWidget> regionWidgets) {
         int count = 0;
-        for(RegionWidget widget : regionWidgets) {
+        for (RegionWidget widget : regionWidgets) {
             widget.setRenderOrder(count);
             count++;
         }
     }
 
     private static RegionWidget findRegionWidgetById(Long id, List<RegionWidget> regionWidgets) {
-        for(RegionWidget widget : regionWidgets) {
-            if(widget.getId().equals(id)) {
+        for (RegionWidget widget : regionWidgets) {
+            if (widget.getId().equals(id)) {
                 return widget;
             }
         }
         throw new IllegalArgumentException("Invalid RegionWidget ID");
     }
-	 
+
 }
\ No newline at end of file

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/rpc/PageApi.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/rpc/PageApi.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/rpc/PageApi.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/api/rpc/PageApi.java Tue Jul 12 15:00:09 2011
@@ -108,28 +108,22 @@ public class PageApi {
 
 	/**
 	 * Deletes a widget
-	 * 
-	 * @param pageId
-	 *            the ID of the {@link org.apache.rave.portal.model.Page}
-	 *            containing the widget region
-	 * @param regionId
-	 *            the ID of the {@link org.apache.rave.portal.model.Region}
-	 *            containing the widget
-	 * @param widgetId
+	 *
+	 * @param regionWidgetId
 	 *            the ID of the {@link org.apache.rave.portal.model.Widget} to
 	 *            delete
 	 * @return an {@link RpcOperation} containing the updated region or any
 	 *         errors encountered.
 	 */
 	@ResponseBody
-    @RequestMapping(method=RequestMethod.POST, value="{pageId}/widget/delete")	
-    public RpcResult<Region> removeWidgetFromPage(@RequestParam final long widgetId, 
-																  @RequestParam final long regionId) {
+    @RequestMapping(method=RequestMethod.POST, value="regionWidget/{regionWidgetId}/delete")
+    public RpcResult<Region> removeWidgetFromPage(@PathVariable final long regionWidgetId) {
 		return new RpcOperation<Region>() {
 			@Override
 			public Region execute() {
-				 return pageService.removeWidgetFromPage(widgetId, regionId);
-			}
+		        pageService.removeWidgetFromPage(regionWidgetId);
+                return null;
+            }
 		}.getResult();
     }
 

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/controller/HomeController.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/controller/HomeController.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/controller/HomeController.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/web/controller/HomeController.java Tue Jul 12 15:00:09 2011
@@ -54,7 +54,7 @@ public class HomeController {
     @RequestMapping(value = {"/", "/index.html"})
     public String getHome(Model model) {
         User user = userService.getAuthenticatedUser();
-        List<Page> pages = pageService.getAllPages(user.getUserId());
+        List<Page> pages = pageService.getAllPages(user.getId());
         model.addAttribute(ModelKeys.PAGES, pages);
         model.addAttribute(ModelKeys.OPENSOCIAL_ENVIRONMENT, openSocialEnvironment);
         return ViewNames.HOME;

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java Tue Jul 12 15:00:09 2011
@@ -54,7 +54,7 @@ public class WookieWidgetService impleme
     private Widget getWidgetForViewer(Widget widget, String context, User viewer){
         try {
             connectorService = getWookieConnectorService(WOOKIE_SERVER_URL, WOOKIE_API_KEY, context);
-            org.apache.wookie.connector.framework.User user = new org.apache.wookie.connector.framework.User(String.valueOf(viewer.getUserId()), viewer.getUsername());
+            org.apache.wookie.connector.framework.User user = new org.apache.wookie.connector.framework.User(String.valueOf(viewer.getId()), viewer.getUsername());
             connectorService.setCurrentUser(user);
             
             System.out.println("Getting widget:"+widget.getUrl()+" from:" +connectorService.getConnection().getURL());

Modified: incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.jsp?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.jsp (original)
+++ incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.jsp Tue Jul 12 15:00:09 2011
@@ -44,11 +44,6 @@
 <c:forEach var="region" items="${defaultPage.regions}">
 <div class="region" id="region-${region.id}-id" >
     <c:forEach var="regionWidget" items="${region.regionWidgets}">
-    <%-- FIXME: whether region.id should be included in the id.
-         I am not sure whether id's of widgets in different regions can be the same.
-         If so, region.id must be included. When a gadget is moved, region id must be updated. 
-         Otherwise, it is not needed.
-    --%>
     <div class="widget-wrapper" id="widget-wrapper-${regionWidget.id}">
         <div class="widget-title-bar" >
             <span id="widget-${regionWidget.id}-title">${regionWidget.widget.title}</span>

Modified: incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/model/UserTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/model/UserTest.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/model/UserTest.java (original)
+++ incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/model/UserTest.java Tue Jul 12 15:00:09 2011
@@ -56,7 +56,7 @@ public class UserTest {
 		
 		user1=new User();
 		user1.setUsername(userName);
-		user1.setUserId(id);
+		user1.setId(id);
 		user1.setPassword(userPassword);
 		user1.setEnabled(user1Enabled);
 		user1.setExpired(user1Expired);
@@ -74,14 +74,14 @@ public class UserTest {
 	public void testAccessorMethods(){
 		assertTrue(user1.getUsername().equals(userName));
 		assertTrue(user1.getPassword().equals(userPassword));
-		assertTrue(user1.getUserId().equals(id));
+		assertTrue(user1.getId().equals(id));
 		assertTrue(user1.isEnabled());
 		assertFalse(user2.isEnabled());
 		assertTrue(user3.isEnabled());
 	}
 	public void testAltConstructors(){
-		assertTrue(user1.getUserId()==user2.getUserId());
-		assertTrue(user1.getUserId()==user3.getUserId());
+		assertTrue(user1.getId()==user2.getId());
+		assertTrue(user1.getId()==user3.getId());
 		assertTrue(user1.getUsername().equals(user3.getUsername()));
 	}
 	

Added: incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/AbstractJpaRepositoryTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/AbstractJpaRepositoryTest.java?rev=1145616&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/AbstractJpaRepositoryTest.java (added)
+++ incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/AbstractJpaRepositoryTest.java Tue Jul 12 15:00:09 2011
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.rave.portal.repository;
+
+import org.apache.rave.portal.model.BasicEntity;
+import org.apache.rave.portal.repository.impl.AbstractJpaRepository;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.Rollback;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import java.lang.reflect.Field;
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+/**
+ */
+
+@Transactional
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/dataContext.xml", "file:src/main/webapp/WEB-INF/applicationContext.xml"})
+@SuppressWarnings("unchecked")
+//By iterating over all repositories in the context, we can be sure that basic repository functionality isn't broken by any overriding methods
+public class AbstractJpaRepositoryTest {
+    @PersistenceContext
+    private EntityManager sharedManager;
+
+    @Autowired
+    private List<AbstractJpaRepository> repositories;
+    //NOTE: In order for tests to succeed, there must be an object with id of 1 in the store for every repository
+    private static final Long VALID_ENTITY_ID = 1L;
+    private static final Long INVALID_ENTITY_ID = -1L;
+
+    @Test
+    public void getById_validId() {
+        for (AbstractJpaRepository repository : repositories) {
+            BasicEntity entity = repository.get(VALID_ENTITY_ID);
+            assertThat(entity, is(notNullValue()));
+            assertThat(entity.getId(), is(equalTo(VALID_ENTITY_ID)));
+        }
+    }
+
+    @Test
+    public void getById_invalidId() {
+        for (AbstractJpaRepository repository : repositories) {
+            BasicEntity entity = repository.get(INVALID_ENTITY_ID);
+            assertThat(entity, is(nullValue()));
+        }
+    }
+
+    @Test
+    @Rollback(true)
+    public void save_newEntity() {
+        for (AbstractJpaRepository repository : repositories) {
+            BasicEntity entity = constructNewEntityForRepository(repository);
+            BasicEntity saved = repository.save(entity);
+            sharedManager.flush();
+            assertThat(saved, is(sameInstance(entity)));
+            assertThat(saved.getId(), is(notNullValue()));
+        }
+    }
+
+    @Test
+    @Rollback(true)
+    public void save_existingEntity() {
+        for (AbstractJpaRepository repository : repositories) {
+            BasicEntity entity = constructNewEntityForRepository(repository);
+            entity.setId(VALID_ENTITY_ID);
+            BasicEntity saved = repository.save(entity);
+            sharedManager.flush();
+            assertThat(saved, is(not(sameInstance(entity))));
+            assertThat(saved.getId(), is(equalTo(entity.getId())));
+        }
+
+    }
+
+    private BasicEntity constructNewEntityForRepository(AbstractJpaRepository repository) {
+        try {
+            Field field = AbstractJpaRepository.class.getDeclaredField("type");
+            field.setAccessible(true);
+            Class<?> objectClass = (Class)field.get(repository);
+            return (BasicEntity) objectClass.newInstance();
+        } catch (Throwable e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}

Modified: incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaPageRepositoryTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaPageRepositoryTest.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaPageRepositoryTest.java (original)
+++ incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaPageRepositoryTest.java Tue Jul 12 15:00:09 2011
@@ -24,12 +24,16 @@ import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.transaction.annotation.Transactional;
 
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
 import java.util.List;
 
 import static org.hamcrest.CoreMatchers.*;
 import static org.junit.Assert.assertThat;
 
+@Transactional
 @RunWith(SpringJUnit4ClassRunner.class)
 @ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/dataContext.xml", "file:src/main/webapp/WEB-INF/applicationContext.xml"})
 public class JpaPageRepositoryTest {
@@ -38,6 +42,9 @@ public class JpaPageRepositoryTest {
     private static final Long INVALID_USER = -1L;
     private static final String WIDGET_URL = "http://www.google.com/ig/modules/wikipedia.xml";
 
+    @PersistenceContext
+    private EntityManager manager;
+
     @Autowired
     private PageRepository repository;
 

Modified: incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaRegionRepositoryTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaRegionRepositoryTest.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaRegionRepositoryTest.java (original)
+++ incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaRegionRepositoryTest.java Tue Jul 12 15:00:09 2011
@@ -136,8 +136,6 @@ public class JpaRegionRepositoryTest {
 
         assertThat(saved.getRegionWidgets().size(), is(equalTo(1)));
         assertThat(widget, is(nullValue()));
-
-
     }
 
 }

Modified: incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaUserRepositoryTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaUserRepositoryTest.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaUserRepositoryTest.java (original)
+++ incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/repository/JpaUserRepositoryTest.java Tue Jul 12 15:00:09 2011
@@ -26,14 +26,22 @@ import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
 
 import static org.hamcrest.CoreMatchers.*;
 import static org.junit.Assert.assertThat;
 
+@Transactional
 @RunWith(SpringJUnit4ClassRunner.class)
 @ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/dataContext.xml", "file:src/main/webapp/WEB-INF/applicationContext.xml"})
 public class JpaUserRepositoryTest {
 
+    @PersistenceContext
+    private EntityManager manager;
+
     private static final Long USER_ID = 1L;
     private static final String USER_NAME = "canonical";
     private static final Long INVALID_USER = -2L;
@@ -58,7 +66,7 @@ public class JpaUserRepositoryTest {
     public void getByUsername_valid() {
         User user = repository.getByUsername(USER_NAME);
         assertThat(user, CoreMatchers.notNullValue());
-        assertThat(user.getUserId(), is(equalTo(USER_ID)));
+        assertThat(user.getId(), is(equalTo(USER_ID)));
         assertThat(user.getPassword(), is(equalTo(USER_NAME)));
         assertThat(user.isAccountNonExpired(), is(true));
     }

Modified: incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/service/PageServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/service/PageServiceTest.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/service/PageServiceTest.java (original)
+++ incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/service/PageServiceTest.java Tue Jul 12 15:00:09 2011
@@ -57,7 +57,7 @@ public class PageServiceTest {
         pageRepository = createNiceMock(PageRepository.class);
         regionRepository = createNiceMock(RegionRepository.class);
         widgetRepository = createNiceMock(WidgetRepository.class);
-        pageService = new DefaultPageService(pageRepository, regionRepository, widgetRepository);
+        pageService = new DefaultPageService(pageRepository, regionRepository, widgetRepository, null);
 
         targetRegion = new Region();
         targetRegion.setRegionWidgets(new ArrayList<RegionWidget>());

Modified: incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/web/api/rpc/PageApiTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/web/api/rpc/PageApiTest.java?rev=1145616&r1=1145615&r2=1145616&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/web/api/rpc/PageApiTest.java (original)
+++ incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/web/api/rpc/PageApiTest.java Tue Jul 12 15:00:09 2011
@@ -143,4 +143,49 @@ public class PageApiTest {
         assertThat(result.getErrorCode(), is(RpcResult.ErrorCode.INTERNAL_ERROR));
         assertThat(result.getErrorMessage(), is(equalTo(INTERNAL_ERROR_MESSAGE)));
     }
+
+    @Test
+    public void deleteWidget_validParams() {
+        final long WIDGET_ID = 3;
+        pageService.removeWidgetFromPage(WIDGET_ID);
+        expectLastCall();
+        RpcResult result = pageApi.removeWidgetFromPage(WIDGET_ID);
+        verify(pageService);
+        assertThat(result, is(notNullValue()));
+        assertThat(result.getResult(), is(nullValue()));
+        assertThat(result.isError(), is(false));
+
+    }
+
+   @Test
+    public void deleteWidget_invalidParams() {
+        final int PAGE_ID = 1;
+        final long WIDGET_ID = 2;
+
+        expect(pageService.addWidgetToPage(PAGE_ID, WIDGET_ID)).andThrow(new IllegalArgumentException(PARAM_ERROR_MESSAGE));
+        replay(pageService);
+        RpcResult result = pageApi.addWidgetToPage(PAGE_ID, WIDGET_ID);
+        verify(pageService);
+        assertThat(result, is(notNullValue()));
+        assertThat(result.getResult(), is(nullValue()));
+        assertThat(result.isError(), is(true));
+        assertThat(result.getErrorCode(), is(RpcResult.ErrorCode.INVALID_PARAMS));
+        assertThat(result.getErrorMessage(), is(equalTo(PARAM_ERROR_MESSAGE)));
+    }
+
+    @Test
+    public void deleteWidget_internalError() {
+        final int PAGE_ID = 1;
+        final long WIDGET_ID = 2;
+
+        expect(pageService.addWidgetToPage(PAGE_ID, WIDGET_ID)).andThrow(new RuntimeException(INTERNAL_ERROR_MESSAGE));
+        replay(pageService);
+        RpcResult result = pageApi.addWidgetToPage(PAGE_ID, WIDGET_ID);
+        verify(pageService);
+        assertThat(result, is(notNullValue()));
+        assertThat(result.getResult(), is(nullValue()));
+        assertThat(result.isError(), is(true));
+        assertThat(result.getErrorCode(), is(RpcResult.ErrorCode.INTERNAL_ERROR));
+        assertThat(result.getErrorMessage(), is(equalTo(INTERNAL_ERROR_MESSAGE)));
+    }
 }