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 2012/06/04 18:39:04 UTC

svn commit: r1346029 [1/3] - in /rave/branches/model_interfaces: ./ rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/ rave-components/rave-core/src/main...

Author: mfranklin
Date: Mon Jun  4 16:39:01 2012
New Revision: 1346029

URL: http://svn.apache.org/viewvc?rev=1346029&view=rev
Log:
Merged changes from trunk (RAVE-625)

Added:
    rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/java/org/apache/rave/integrationtests/steps/PageOperationsSteps.java
      - copied unchanged from r1346018, rave/trunk/rave-integration-tests/rave-default-account-tests/src/main/java/org/apache/rave/integrationtests/steps/PageOperationsSteps.java
    rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/java/org/apache/rave/integrationtests/steps/ProfileSteps.java
      - copied unchanged from r1346018, rave/trunk/rave-integration-tests/rave-default-account-tests/src/main/java/org/apache/rave/integrationtests/steps/ProfileSteps.java
Modified:
    rave/branches/model_interfaces/   (props changed)
    rave/branches/model_interfaces/CHANGELOG
    rave/branches/model_interfaces/pom.xml
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPerson.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageUser.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluator.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
    rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/api/rpc/PageApi.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
    rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java
    rave/branches/model_interfaces/rave-integration-tests/pom.xml
    rave/branches/model_interfaces/rave-integration-tests/rave-admin-tests/pom.xml
    rave/branches/model_interfaces/rave-integration-tests/rave-admin-tests/src/main/stories/deleteNewUser.story
    rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/pom.xml
    rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/src/main/java/org/apache/rave/integrationtests/pages/Portal.java
    rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/src/main/resources/applicationContext-tests.xml
    rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/pom.xml
    rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/java/org/apache/rave/integrationtests/steps/DefaultAccountSteps.java
    rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/canonicalLogin.story
    rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/johnDoe.story
    rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/johnLdap.story
    rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/openidLogin.story
    rave/branches/model_interfaces/rave-integration-tests/rave-newuser-tests/pom.xml
    rave/branches/model_interfaces/rave-integration-tests/rave-newuser-tests/src/main/stories/newuser.story
    rave/branches/model_interfaces/rave-portal-resources/src/main/resources/messages.properties
    rave/branches/model_interfaces/rave-portal-resources/src/main/resources/messages_nl.properties
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/addwidget.jsp
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/mobile_home.jsp
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/tags/region.tag
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/accordion.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/alerts.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/breadcrumbs.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/button-groups.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/buttons.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/carousel.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/close.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/code.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/component-animations.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/dropdowns.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/forms.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/grid.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/hero-unit.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/labels-badges.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/layouts.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/mixins.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/modals.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/navbar.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/navs.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/pager.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/pagination.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/popovers.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/progress-bars.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/reset.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/responsive-1200px-min.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/responsive-767px-max.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/responsive-768px-979px.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/responsive-navbar.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/responsive-utilities.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/responsive.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/scaffolding.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/sprites.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/tables.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/thumbnails.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/tooltip.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/type.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/utilities.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/variables.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/bootstrap/less/wells.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/css/rave-css.less
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/script/rave.js
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/script/rave_api.js
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/script/rave_layout.js
    rave/branches/model_interfaces/rave-portal-resources/src/main/webapp/script/rave_opensocial.js
    rave/branches/model_interfaces/rave-portal/src/main/dist/LICENSE
    rave/branches/model_interfaces/rave-portal/src/main/dist/NOTICE
    rave/branches/model_interfaces/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java

Propchange: rave/branches/model_interfaces/
------------------------------------------------------------------------------
  Merged /rave/trunk:r1343807-1346021

Modified: rave/branches/model_interfaces/CHANGELOG
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/CHANGELOG?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/CHANGELOG (original)
+++ rave/branches/model_interfaces/CHANGELOG Mon Jun  4 16:39:01 2012
@@ -1,6 +1,40 @@
 Apache Rave Change Log
 https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311290 (select the version of release and output as text to create this file)
 
+Release Notes - Rave - Version 0.12
+================================================================================================================
+
+** Sub-task
+    * [RAVE-539] - Widget store: fix widget detail display
+    * [RAVE-543] - Implement LESS compilation for Bootstrap
+    * [RAVE-586] - Break out the navbar
+    * [RAVE-592] - Rename header.tag to navbar.tag
+    * [RAVE-606] - Factor out "old" CSS files
+    * [RAVE-614] - Update Bootstrap JavaScript to 2.0.3
+
+** Bug
+    * [RAVE-599] - OpenSocial query for listing viewer friends returns always zero results
+    * [RAVE-600] - JavaScript Closure Compiler is failing
+    * [RAVE-623] - Logging for OpenAjax.hub methods causes error and silently fails
+
+** Improvement
+    * [RAVE-601] - Upgrade wro4j to 1.4.5 to fix Bootstrap processing errors
+    * [RAVE-602] - Improve overlap between Modernizr, CSS3 Mediaqueries, and HTMLShiv Javascript Libraries
+    * [RAVE-604] - refactor <meta> tags into their own JSP tag for easier overlaying
+    * [RAVE-605] - Add a consumer notification ability to the StaticContentFetcherService
+    * [RAVE-613] - Support registering custom popup types with the container
+
+** New Feature
+    * [RAVE-612] - Add ability to hide/display the widget title and widget border
+    * [RAVE-615] - An easy way to determine the version of RAVE
+
+** Task
+    * [RAVE-633] - Upgrade the version of wookie bundled with rave to 0.10.0
+
+** Test
+    * [RAVE-610] - Add integration tests to the project
+
+
 Release Notes - Rave - Version 0.11
 ================================================================================================================
 ** Sub-task

Modified: rave/branches/model_interfaces/pom.xml
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/pom.xml?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/pom.xml (original)
+++ rave/branches/model_interfaces/pom.xml Mon Jun  4 16:39:01 2012
@@ -8,7 +8,7 @@
   "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
+    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
@@ -16,9 +16,7 @@
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-
-  $Id$
--->
+  -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
     <modelVersion>4.0.0</modelVersion>
@@ -45,7 +43,7 @@
 
     <properties>
         <apache.shindig.version>2.5.0-beta1</apache.shindig.version>
-        <apache.wookie.version>0.9.2-incubating</apache.wookie.version>
+        <apache.wookie.version>0.10.0-incubating</apache.wookie.version>
         <org.springframework.version>3.1.0.RELEASE</org.springframework.version>
         <org.springframework.mobile.version>1.0.0.M3</org.springframework.mobile.version>
         <jstl.version>1.2</jstl.version>
@@ -570,7 +568,7 @@
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
-                                        <execute/>
+                                        <execute />
                                     </action>
                                 </pluginExecution>
                                 <pluginExecution>
@@ -583,7 +581,7 @@
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
-                                        <execute/>
+                                        <execute />
                                     </action>
                                 </pluginExecution>
                                 <pluginExecution>
@@ -596,7 +594,7 @@
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
-                                        <execute/>
+                                        <execute />
                                     </action>
                                 </pluginExecution>
                                 <pluginExecution>
@@ -610,7 +608,7 @@
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
-                                        <execute/>
+                                        <execute />
                                     </action>
                                 </pluginExecution>
                             </pluginExecutions>
@@ -664,6 +662,7 @@
         <module>rave-portal-dependencies</module>
         <module>rave-demo-gadgets</module>
         <module>rave-portal</module>
+        <module>rave-integration-tests</module>
     </modules>
     <profiles>
         <profile>
@@ -716,15 +715,6 @@
                     </plugin>
                 </plugins>
             </build>
-            <modules>
-                <module>rave-components</module>
-                <module>rave-providers</module>
-                <module>rave-portal-resources</module>
-                <module>rave-portal-dependencies</module>
-                <module>rave-demo-gadgets</module>
-                <module>rave-portal</module>
-                <module>rave-integration-tests</module>
-            </modules>
         </profile>
     </profiles>
 </project>

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPerson.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPerson.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPerson.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/JpaPerson.java Mon Jun  4 16:39:01 2012
@@ -33,7 +33,7 @@ import java.util.List;
 @Access(AccessType.FIELD)
 @NamedQueries(value = {
     @NamedQuery(name = JpaPerson.FIND_BY_USERNAME, query = "select p from JpaPerson p where p.username like :username"),
-    @NamedQuery(name = JpaPerson.FIND_FRIENDS_BY_USERNAME, query = "select a.followed from PersonAssociation a where a.follower.username = :username"),
+    @NamedQuery(name = JpaPerson.FIND_FRIENDS_BY_USERNAME, query = "select a.followed from JpaPersonAssociation a where a.follower.username = :username"),
     @NamedQuery(name = JpaPerson.FIND_BY_GROUP_MEMBERSHIP, query = "select m from JpaGroup g join g.members m where exists " +
             "(select 'found' from g.members b where b.username = :username) and m.username <> :username")
 })

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageUser.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageUser.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageUser.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageUser.java Mon Jun  4 16:39:01 2012
@@ -55,6 +55,7 @@ public class PageUser implements BasicEn
     @JoinColumn(name = "page_id", nullable=false)
     private Page page;
     
+    @Basic(optional=false) @Column(name="editor")
     private boolean editor;
     
     @Basic(optional=false) @Column(name="render_sequence")

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java Mon Jun  4 16:39:01 2012
@@ -95,6 +95,7 @@ public class JpaPageRepository extends A
         p.setOwner(user);
         PageUser pageUser = new PageUser(p.getOwner(), p, pt.getRenderSequence());
         pageUser.setPageStatus(PageInvitationStatus.OWNER);
+        pageUser.setEditor(true);
         List<PageUser> members = new ArrayList<PageUser>();
         members.add(pageUser);
         p.setMembers(members);
@@ -170,6 +171,7 @@ public class JpaPageRepository extends A
             // create new pageUser tuple
             PageUser pageUser = new PageUser(lPage.getOwner(), lPage, pt.getRenderSequence());
             pageUser.setPageStatus(PageInvitationStatus.OWNER);
+            pageUser.setEditor(true);
             List<PageUser> members = new ArrayList<PageUser>();
             members.add(pageUser);
             lPage.setMembers(members);

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluator.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultPagePermissionEvaluator.java Mon Jun  4 16:39:01 2012
@@ -118,11 +118,12 @@ public class DefaultPagePermissionEvalua
             case UPDATE:
                 // anyone can create, delete, or update a page that they own                  
                 hasPermission = isPageOwner(authentication, page, trustedPageContainer, trustedDomainObject)
-                || isPageMember(authentication, page, trustedPageContainer, trustedDomainObject);     
+                || isPageMember(authentication, page, trustedPageContainer, trustedDomainObject, true);
                 break;
             case READ:
                 // anyone can read a USER page they own or anyone's PERSON_PROFILE page
-                hasPermission = isReadablePage(authentication, page, trustedPageContainer, trustedDomainObject);
+                hasPermission = isReadablePage(authentication, page, trustedPageContainer, trustedDomainObject)
+                || isPageMember(authentication, page, trustedPageContainer, trustedDomainObject, false);
                 break;
             default:
                 log.warn("unknown permission: " + permission);
@@ -187,7 +188,7 @@ public class DefaultPagePermissionEvalua
     private boolean isReadablePage(Authentication authentication, Page page, List<Page> trustedPageContainer, boolean trustedDomainObject) {
         return isPersonProfilePageOrSubPage(page) ||
                isPageOwner(authentication, page, trustedPageContainer, trustedDomainObject) ||
-               isPageMember(authentication, page, trustedPageContainer, trustedDomainObject);
+               isPageMember(authentication, page, trustedPageContainer, trustedDomainObject, false);
     }
     
     private boolean isPersonProfilePageOrSubPage(Page page) {
@@ -199,7 +200,7 @@ public class DefaultPagePermissionEvalua
     // checks to see if the Authentication object principal is a member of the supplied page 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 isPageMember(Authentication authentication, Page page, List<Page> trustedPageContainer, boolean trustedDomainObject) {
+    private boolean isPageMember(Authentication authentication, Page page, List<Page> trustedPageContainer, boolean trustedDomainObject, boolean checkEditorStatus) {
         Page trustedPage = null;
         if (trustedDomainObject) {
             trustedPage = page;
@@ -219,6 +220,10 @@ public class DefaultPagePermissionEvalua
         for (PageUser pageUser:trustedPage.getMembers()){
             if (pageUser.getUser().getUsername().equals(viewer)){
                 log.info("User "+viewer+" is a member of page "+trustedPage.getEntityId());
+                if(checkEditorStatus){
+                    log.info("checking editor:"+trustedPage.getEntityId()+"@"+viewer+"@"+pageUser.isEditor());
+                    return pageUser.isEditor();
+                }
                 return true;
             }
         }

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionPermissionEvaluator.java Mon Jun  4 16:39:01 2012
@@ -18,7 +18,10 @@
  */
 package org.apache.rave.portal.security.impl;
 
+import org.apache.rave.portal.model.Page;
+import org.apache.rave.portal.model.PageUser;
 import org.apache.rave.portal.model.Region;
+import org.apache.rave.portal.model.RegionWidget;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.repository.RegionRepository;
 import org.slf4j.Logger;
@@ -109,11 +112,14 @@ public class DefaultRegionPermissionEval
                 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);
+                hasPermission = isRegionOwner(authentication, region, trustedRegionContainer, trustedDomainObject)
+                || isRegionMember(authentication, region, trustedRegionContainer, trustedDomainObject, true);
                 break;
+            case READ:
+                hasPermission = isRegionOwner(authentication, region, trustedRegionContainer, trustedDomainObject)
+                || isRegionMember(authentication, region, trustedRegionContainer, trustedDomainObject, false);
             default:
                 log.warn("unknown permission: " + permission);
                 break;
@@ -171,4 +177,35 @@ public class DefaultRegionPermissionEval
             throw new IllegalArgumentException("unknown RaveSecurityContext type: " + raveSecurityContext.getType());
         }
     }
+    
+    private boolean isRegionMember(Authentication authentication, Region region, List<Region> trustedRegionContainer, boolean trustedDomainObject, boolean checkEditorStatus) {
+        Region trustedRegion = null;
+        if (trustedDomainObject) {
+            trustedRegion = region;
+        } else {
+            trustedRegion = getTrustedRegion(region.getEntityId(), trustedRegionContainer);
+        }
+        
+        Page containerPage = trustedRegion.getPage();
+        
+        
+        if (containerPage.getMembers() == null){
+            return false;
+        }
+        //
+        // Check that the viewer is a member
+        //
+        String viewer = ((User)authentication.getPrincipal()).getUsername();
+        for (PageUser pageUser:containerPage.getMembers()){
+            if (pageUser.getUser().getUsername().equals(viewer)){
+                log.info("User "+viewer+" is a member of page "+containerPage.getEntityId());
+                if(checkEditorStatus){
+                    return pageUser.isEditor();
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
 }
\ No newline at end of file

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluator.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluator.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluator.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/security/impl/DefaultRegionWidgetPermissionEvaluator.java Mon Jun  4 16:39:01 2012
@@ -18,6 +18,8 @@
  */
 package org.apache.rave.portal.security.impl;
 
+import org.apache.rave.portal.model.Page;
+import org.apache.rave.portal.model.PageUser;
 import org.apache.rave.portal.model.RegionWidget;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.repository.RegionWidgetRepository;
@@ -109,11 +111,14 @@ public class DefaultRegionWidgetPermissi
                 break;
             case CREATE:
             case DELETE:
-            case READ:
             case UPDATE:
                 // anyone can create, delete, read, or update a regionWidget that they own
-                hasPermission = isRegionWidgetOwner(authentication, regionWidget, trustedRegionWidgetContainer, trustedDomainObject);
+                hasPermission = isRegionWidgetOwner(authentication, regionWidget, trustedRegionWidgetContainer, trustedDomainObject)
+                || isRegionWidgetMember(authentication, regionWidget, trustedRegionWidgetContainer, trustedDomainObject, true);
                 break;
+            case READ:
+                hasPermission = isRegionWidgetOwner(authentication, regionWidget, trustedRegionWidgetContainer, trustedDomainObject)
+                || isRegionWidgetMember(authentication, regionWidget, trustedRegionWidgetContainer, trustedDomainObject, false);
             default:
                 log.warn("unknown permission: " + permission);
                 break;
@@ -175,4 +180,35 @@ public class DefaultRegionWidgetPermissi
     private String getUsernameFromRegionWidget(RegionWidget regionWidget) {
         return regionWidget.getRegion().getPage().getOwner().getUsername();
     }
+    
+    private boolean isRegionWidgetMember(Authentication authentication, 
+            RegionWidget regionWidget, List<RegionWidget> trustedRegionWidgetContainer, boolean trustedDomainObject, boolean checkEditorStatus) {
+        RegionWidget trustedRegionWidget = null;
+        if (trustedDomainObject) {
+            trustedRegionWidget = regionWidget;
+        } else {
+            trustedRegionWidget = getTrustedRegionWidget(regionWidget.getEntityId(), trustedRegionWidgetContainer);
+        }
+        
+        Page containerPage = trustedRegionWidget.getRegion().getPage();
+        
+        
+        if (containerPage.getMembers() == null){
+            return false;
+        }
+        //
+        // Check that the viewer is a member
+        //
+        String viewer = ((User)authentication.getPrincipal()).getUsername();
+        for (PageUser pageUser:containerPage.getMembers()){
+            if (pageUser.getUser().getUsername().equals(viewer)){
+                log.info("User "+viewer+" is a member of page "+containerPage.getEntityId());
+                if(checkEditorStatus){
+                    return pageUser.isEditor();
+                }
+                return true;
+            }
+        }
+        return false;
+    }
 }

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java Mon Jun  4 16:39:01 2012
@@ -190,8 +190,8 @@ public interface PageService {
      *                        -1 if you want this to be the first page
      * @return the updated Page object containing its new render sequence
      */
-    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'update') and " +
-                  "hasPermission(#moveAfterPageId, 'org.apache.rave.portal.model.Page', 'update')")
+    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'read') and " +
+                  "hasPermission(#moveAfterPageId, 'org.apache.rave.portal.model.Page', 'read')")
     Page movePage(long pageId, long moveAfterPageId);
     
     /**
@@ -200,7 +200,7 @@ public interface PageService {
      * @param pageId the pageId of the page to move to the default position
      * @return the updated Page object containing its new render sequence
      */
-    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'update')") 
+    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'read')") 
     Page movePageToDefault(long pageId);
 
     /**
@@ -217,8 +217,10 @@ public interface PageService {
      * @param pageId - the id of the page in question
      * @param userId - the userid to add
      * @return -  whether the user was successfully removed or not
+     * Note: this is read access because a page shared to a non page owner means they have 'read' access
+     * unless they are set as an 'editor' of the page, which means 'update' access. 
      */
-    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'update')")
+    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'read')")
     Boolean removeMemberFromPage(long pageId, long userId);
 
     /**
@@ -227,6 +229,18 @@ public interface PageService {
      * @param shareStatus - a string value defined in PageStatus
      * @return
      */
-    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'update')")
+    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'read')")
     Boolean updateSharedPageStatus(long pageId, String shareStatus);
+
+    /**
+     * Update a user who has shared access to a given page, so that they can edit the page (true)
+     * or can only view it (false)
+     * @param pageId - the id of the page in question 
+     * @param userId - the userId of the user to assign the permission to
+     * @param isEditor - value to denote if the user can edit or not
+     * @return
+     */
+    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.portal.model.Page', 'update')")
+    Boolean updatePageEditingStatus(long pageId, long userId, boolean isEditor);
+
 }
\ No newline at end of file

Modified: rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java Mon Jun  4 16:39:01 2012
@@ -357,6 +357,22 @@ public class DefaultPageService implemen
         }
     }
 
+    @Override
+    @Transactional
+    public Boolean updatePageEditingStatus(long pageId, long userId, boolean isEditor) {
+        Page page = this.getPage(pageId);
+        for(PageUser pageUser : page.getMembers()){
+            if(pageUser.getUser().equals(userService.getUserById(userId))){
+                pageUser.setEditor(isEditor);
+            }
+        }
+        if(pageRepository.save(page) != null){
+            return Boolean.TRUE;
+        }else{
+            return Boolean.FALSE;
+        }
+    }
+
     /**
      * Utility function to determine if a Page layout adjustment is needed
      * which comparing the existing and new PageLayout objects
@@ -500,6 +516,7 @@ public class DefaultPageService implemen
         page.setPageLayout(pageLayout);
         PageUser pageUser = new PageUser(page.getOwner(), page, renderSequence);
         pageUser.setPageStatus(PageInvitationStatus.OWNER);
+        pageUser.setEditor(true);
 
         List<PageUser> members = new ArrayList<PageUser>();
         members.add(pageUser);

Modified: rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/api/rpc/PageApi.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/api/rpc/PageApi.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/api/rpc/PageApi.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/api/rpc/PageApi.java Mon Jun  4 16:39:01 2012
@@ -249,4 +249,15 @@ public class PageApi {
              }
         }.getResult();
     }
+
+    @ResponseBody
+    @RequestMapping(value = "{pageId}/editstatus", method = RequestMethod.POST)
+    public RpcResult<Boolean> updatePageEditingStatus(@PathVariable final long pageId, @RequestParam final long userId, @RequestParam final boolean isEditor) {
+        return new RpcOperation<Boolean>() {
+             @Override
+             public Boolean execute() {
+               return pageService.updatePageEditingStatus(pageId, userId, isEditor);
+             }
+        }.getResult();
+    }
 }
\ No newline at end of file

Modified: rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java Mon Jun  4 16:39:01 2012
@@ -84,7 +84,7 @@ public class PageController {
         List<PageLayout> pageLayouts = pageLayoutService.getAllUserSelectable();
         addAttributesToModel(model, page, currentPageUser, pages, pageLayouts);
         String view = ControllerUtils.getDeviceAppropriateView(request, ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME);
-        ControllerUtils.addNavItemsToModel(view, model, page.getEntityId(), userService.getAuthenticatedUser());
+        ControllerUtils.addNavItemsToModel(view, model, page.getEntityId(), userService.getAuthenticatedUser(), currentPageUser.isEditor());
         return view;
     }
     
@@ -103,7 +103,7 @@ public class PageController {
             List<PageLayout> pageLayouts = pageLayoutService.getAllUserSelectable();
             addAttributesToModel(model, page, currentPageUser, pages, pageLayouts);
             String view = ControllerUtils.getDeviceAppropriateView(request, ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME);
-            ControllerUtils.addNavItemsToModel(view, model, page.getEntityId(), thisUser);
+            ControllerUtils.addNavItemsToModel(view, model, page.getEntityId(), thisUser, currentPageUser.isEditor());
             return view;
         } catch (Exception e) {
             logger.info("unable to get page - possibly because a shared page was revoked by its owner");

Modified: rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java Mon Jun  4 16:39:01 2012
@@ -114,7 +114,7 @@ public class ProfileController {
 
     public static void addNavItemsToModel(String view, ModelMap model, Long referringPageId, User user) {
         long refPageId = referringPageId != null ? referringPageId : 0;
-        final NavigationMenu topMenu = ControllerUtils.getTopMenu(view, refPageId, user);
+        final NavigationMenu topMenu = ControllerUtils.getTopMenu(view, refPageId, user, false);
         model.addAttribute(topMenu.getName(), topMenu);
     }
 }

Modified: rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java (original)
+++ rave/branches/model_interfaces/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java Mon Jun  4 16:39:01 2012
@@ -61,19 +61,25 @@ public class ControllerUtils {
     }
 
     public static void addNavItemsToModel(String view, Model model, long referringPageId, User user) {
-        final NavigationMenu topMenu = getTopMenu(view, referringPageId, user);
+        final NavigationMenu topMenu = getTopMenu(view, referringPageId, user, true);
         model.addAttribute(topMenu.getName(), topMenu);
     }
 
-    public static NavigationMenu getTopMenu(String view, long referringPageId, User user) {
+    public static void addNavItemsToModel(String view, Model model, long referringPageId, User user, boolean addStore) {
+        final NavigationMenu topMenu = getTopMenu(view, referringPageId, user, addStore);
+        model.addAttribute(topMenu.getName(), topMenu);
+    }
+    
+    public static NavigationMenu getTopMenu(String view, long referringPageId, User user, boolean addStoreLink) {
         NavigationMenu menu = new NavigationMenu("topnav");
-
-        if(view.startsWith(ViewNames.PAGE)) {
+        if(view.startsWith(ViewNames.PAGE) || view.startsWith(ViewNames.MOBILE_HOME)) {
             NavigationItem profile = new NavigationItem("page.profile.title", user.getDisplayName() != null ? user.getDisplayName() : user.getUsername(), "/app/person/" + user.getUsername() + "?referringPageId=" + referringPageId);
             menu.addNavigationItem(profile);
 
-            NavigationItem store = new NavigationItem("page.store.title", null, "/app/store?referringPageId=" + referringPageId);
-            menu.addNavigationItem(store);
+            if(addStoreLink){
+                NavigationItem store = new NavigationItem("page.store.title", null, "/app/store?referringPageId=" + referringPageId);
+                menu.addNavigationItem(store);
+            }
 
             NavigationItem admin = getAdminItem();
             menu.addNavigationItem(admin);

Modified: rave/branches/model_interfaces/rave-integration-tests/pom.xml
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/pom.xml?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/pom.xml (original)
+++ rave/branches/model_interfaces/rave-integration-tests/pom.xml Mon Jun  4 16:39:01 2012
@@ -18,8 +18,7 @@
   under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
@@ -34,16 +33,17 @@
 
     <packaging>pom</packaging>
     <name>Apache Rave :: rave-integration-tests</name>
-    <description>JBehave stories verifying functionality of Apache Rave using Java and Spring</description>
+    <description>Test stories verifying functionality of Apache Rave using Java and Spring</description>
 
     <properties>
         <jbehave.core.version>3.6.1</jbehave.core.version>
         <jbehave.web.version>3.5.1</jbehave.web.version>
         <jbehave.site.version>3.1.1</jbehave.site.version>
         <org.hamcrest.version>1.2.1</org.hamcrest.version>
+        <commons-logging.version>1.1.1</commons-logging.version>
         <!-- New Selenium versions are often needed after an upgrade of Mozilla Firefox -->
-        <selenium.version>[2.20.0, 2.99)</selenium.version>
-        <meta.filter/>
+        <selenium.version>[2.20.0, 2.22)</selenium.version>
+        <meta.filter />
 
         <!-- Cargo configuration properties -->
         <cargo.version>1.2.1</cargo.version>
@@ -53,7 +53,7 @@
         <!-- if you want to start remote debugging session suspended
   override on command line with -Dcargo.debug.suspend=y -->
         <cargo.debug.suspend>n</cargo.debug.suspend>
-        <cargo.args/>
+        <cargo.args />
     </properties>
 
     <dependencyManagement>
@@ -73,7 +73,12 @@
                 <artifactId>hamcrest-integration</artifactId>
                 <version>${org.hamcrest.version}</version>
             </dependency>
-
+            <dependency>
+                <groupId>commons-logging</groupId>
+                <artifactId>commons-logging</artifactId>
+                <version>${commons-logging.version}</version>
+                <scope>compile</scope>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 
@@ -164,7 +169,6 @@
         <dependency>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
-            <version>1.1.1</version>
             <scope>compile</scope>
         </dependency>
     </dependencies>
@@ -181,129 +185,171 @@
                         <target>1.6</target>
                     </configuration>
                 </plugin>
+                <plugin>
+                    <groupId>org.jbehave</groupId>
+                    <artifactId>jbehave-maven-plugin</artifactId>
+                    <version>${jbehave.core.version}</version>
+                    <executions>
+                        <execution>
+                            <id>unpack-view-resources</id>
+                            <phase>process-resources</phase>
+                            <goals>
+                                <goal>unpack-view-resources</goal>
+                            </goals>
+                        </execution>
+                        <execution>
+                            <id>embeddable-stories</id>
+                            <phase>integration-test</phase>
+                            <configuration>
+                                <includes>
+                                    <include>**/*Stories.java</include>
+                                </includes>
+                                <excludes />
+                                <generateViewAfterStories>true</generateViewAfterStories>
+                                <ignoreFailureInStories>true</ignoreFailureInStories>
+                                <ignoreFailureInView>true</ignoreFailureInView>
+                                <metaFilters>
+                                    <metaFilter>${meta.filter}</metaFilter>
+                                </metaFilters>
+                            </configuration>
+                            <goals>
+                                <goal>run-stories-as-embeddables</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
             </plugins>
         </pluginManagement>
-        <plugins>
-            <plugin>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <version>1.7</version>
-                <executions>
-                    <execution>
-                        <phase>initialize</phase>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
+    </build>
+    <profiles>
+        <profile>
+            <id>integration-tests</id>
+            <build>
+                <defaultGoal>integration-test</defaultGoal>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <version>1.7</version>
+                        <executions>
+                            <execution>
+                                <phase>initialize</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <delete>
+                                            <fileset dir="/tmp" includes="rave_db*" />
+                                        </delete>
+                                    </target>
+                                </configuration>
+                                <inherited>false</inherited>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.codehaus.cargo</groupId>
+                        <artifactId>cargo-maven2-plugin</artifactId>
+                        <version>${cargo.version}</version>
+                        <executions>
+                            <execution>
+                                <id>start-container</id>
+                                <phase>pre-integration-test</phase>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <inherited>false</inherited>
+                            </execution>
+                        </executions>
                         <configuration>
-                            <target>
-                                <delete>
-                                    <fileset dir="/tmp" includes="rave_db*"/>
-                                </delete>
-                            </target>
-                        </configuration>
-                        <inherited>false</inherited>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.cargo</groupId>
-                <artifactId>cargo-maven2-plugin</artifactId>
-                <version>${cargo.version}</version>
-                <executions>
-                    <execution>
-                        <id>start-container</id>
-                        <phase>pre-integration-test</phase>
-                        <goals>
-                            <goal>start</goal>
-                        </goals>
-                        <inherited>false</inherited>
-                    </execution>
-                </executions>
-                <configuration>
-                    <configuration>
-                        <properties>
-                            <cargo.jvmargs>
-                                <![CDATA[-Dh2.bindAddress="localhost" -Xdebug -XX:MaxPermSize=256m -Xrunjdwp:transport=dt_socket,address=${cargo.debug.address},server=y,suspend=${cargo.debug.suspend} -noverify ${javaagent} ${cargo.args}]]>
-                            </cargo.jvmargs>
-                            <cargo.tomcat.context.reloadable>true</cargo.tomcat.context.reloadable>
-                        </properties>
-                        <home>${project.build.directory}/tomcat6x</home>
-                        <deployables>
-                            <deployable>
-                                <groupId>org.apache.wookie</groupId>
-                                <artifactId>wookie</artifactId>
-                                <type>war</type>
+                            <configuration>
                                 <properties>
-                                    <context>/wookie</context>
+                                    <cargo.jvmargs>
+                                        <![CDATA[-Dh2.bindAddress="localhost" -Xdebug -XX:MaxPermSize=256m -Xrunjdwp:transport=dt_socket,address=${cargo.debug.address},server=y,suspend=${cargo.debug.suspend} -noverify ${javaagent} ${cargo.args}]]>
+                                    </cargo.jvmargs>
+                                    <cargo.tomcat.context.reloadable>true</cargo.tomcat.context.reloadable>
                                 </properties>
-                            </deployable>
-                            <deployable>
-                                <groupId>org.apache.rave</groupId>
-                                <artifactId>rave-shindig</artifactId>
-                                <type>war</type>
-                                <properties>
-                                    <context>/ROOT</context>
-                                </properties>
-                            </deployable>
-                            <deployable>
-                                <groupId>org.apache.rave</groupId>
-                                <artifactId>rave-demo-gadgets</artifactId>
-                                <type>war</type>
-                                <properties>
-                                    <context>/demogadgets</context>
-                                </properties>
-                            </deployable>
-                            <deployable>
-                                <groupId>org.apache.rave</groupId>
-                                <artifactId>rave-portal</artifactId>
-                                <type>war</type>
-                                <properties>
-                                    <context>/portal</context>
-                                </properties>
-                            </deployable>
-                        </deployables>
-                        <configfiles>
-                            <configfile>
-                                <file>${project.basedir}/../rave-portal-resources/src/main/dist/conf/tomcat-users.xml
-                                </file>
-                                <todir>conf/</todir>
-                                <tofile>tomcat-users.xml</tofile>
-                            </configfile>
-                        </configfiles>
-                    </configuration>
-                    <container>
-                        <containerId>tomcat6x</containerId>
-                        <timeout>180000</timeout>
-                        <zipUrlInstaller>
-                            <downloadDir>${settings.localRepository}/org/codehaus/cargo/cargo-container-archives
-                            </downloadDir>
-                            <url>
-                                http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz
-                            </url>
-                        </zipUrlInstaller>
-                        <systemProperties>
-                            <net.sf.ehcache.skipUpdateCheck>true</net.sf.ehcache.skipUpdateCheck>
-                        </systemProperties>
-                        <dependencies>
-                            <dependency>
-                                <groupId>javax.mail</groupId>
-                                <artifactId>mail</artifactId>
-                                <classpath>shared</classpath>
-                            </dependency>
-                            <dependency>
-                                <groupId>javax.activation</groupId>
-                                <artifactId>activation</artifactId>
-                                <classpath>shared</classpath>
-                            </dependency>
-                        </dependencies>
-                    </container>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+                                <home>${project.build.directory}/tomcat6x</home>
+                                <deployables>
+                                    <deployable>
+                                        <groupId>org.apache.wookie</groupId>
+                                        <artifactId>wookie</artifactId>
+                                        <type>war</type>
+                                        <properties>
+                                            <context>/wookie</context>
+                                        </properties>
+                                    </deployable>
+                                    <deployable>
+                                        <groupId>org.apache.rave</groupId>
+                                        <artifactId>rave-shindig</artifactId>
+                                        <type>war</type>
+                                        <properties>
+                                            <context>/ROOT</context>
+                                        </properties>
+                                    </deployable>
+                                    <deployable>
+                                        <groupId>org.apache.rave</groupId>
+                                        <artifactId>rave-demo-gadgets</artifactId>
+                                        <type>war</type>
+                                        <properties>
+                                            <context>/demogadgets</context>
+                                        </properties>
+                                    </deployable>
+                                    <deployable>
+                                        <groupId>org.apache.rave</groupId>
+                                        <artifactId>rave-portal</artifactId>
+                                        <type>war</type>
+                                        <properties>
+                                            <context>/portal</context>
+                                        </properties>
+                                    </deployable>
+                                </deployables>
+                                <configfiles>
+                                    <configfile>
+                                        <file>
+                                            ${project.basedir}/../rave-portal-resources/src/main/dist/conf/tomcat-users.xml
+                                        </file>
+                                        <todir>conf/</todir>
+                                        <tofile>tomcat-users.xml</tofile>
+                                    </configfile>
+                                </configfiles>
+                            </configuration>
+                            <container>
+                                <containerId>tomcat6x</containerId>
+                                <timeout>180000</timeout>
+                                <zipUrlInstaller>
+                                    <downloadDir>${settings.localRepository}/org/codehaus/cargo/cargo-container-archives
+                                    </downloadDir>
+                                    <url>
+                                        http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz
+                                    </url>
+                                </zipUrlInstaller>
+                                <systemProperties>
+                                    <net.sf.ehcache.skipUpdateCheck>true</net.sf.ehcache.skipUpdateCheck>
+                                </systemProperties>
+                                <dependencies>
+                                    <dependency>
+                                        <groupId>javax.mail</groupId>
+                                        <artifactId>mail</artifactId>
+                                        <classpath>shared</classpath>
+                                    </dependency>
+                                    <dependency>
+                                        <groupId>javax.activation</groupId>
+                                        <artifactId>activation</artifactId>
+                                        <classpath>shared</classpath>
+                                    </dependency>
+                                </dependencies>
+                            </container>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
     <modules>
         <module>rave-core-tests</module>
         <module>rave-newuser-tests</module>
         <module>rave-admin-tests</module>
         <module>rave-default-account-tests</module>
     </modules>
-</project>
+</project>
\ No newline at end of file

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-admin-tests/pom.xml
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-admin-tests/pom.xml?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-admin-tests/pom.xml (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-admin-tests/pom.xml Mon Jun  4 16:39:01 2012
@@ -18,73 +18,52 @@
   under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.rave.integration-tests</groupId>
-  <artifactId>rave-admin-tests</artifactId>
-  <name>Apache Rave :: rave-admin-tests</name>
-  <description>Integration tests for administrative functions</description>
-
-  <parent>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.rave.integration-tests</groupId>
-    <artifactId>rave-integration-tests</artifactId>
-    <version>0.12-model_interfaces-SNAPSHOT</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
+    <artifactId>rave-admin-tests</artifactId>
+    <name>Apache Rave :: rave-admin-tests</name>
+    <description>Integration tests for administrative functions</description>
+
+    <parent>
+        <groupId>org.apache.rave.integration-tests</groupId>
+        <artifactId>rave-integration-tests</artifactId>
+        <version>0.12-model_interfaces-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
 
-  <dependencies>
-    <!-- This is the core tests jar that we just made in a previous module -->
-    <dependency>
-      <groupId>org.apache.rave.integration-tests</groupId>
-      <artifactId>rave-core-tests</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
+    <dependencies>
+        <!-- This is the core tests jar that we just made in a previous module -->
+        <dependency>
+            <groupId>org.apache.rave.integration-tests</groupId>
+            <artifactId>rave-core-tests</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 
-  <build>
-    <resources>
-      <resource>
-        <directory>${basedir}/src/main/resources</directory>
-      </resource>
-      <resource>
-        <directory>${basedir}/src/main/stories</directory>
-      </resource>
-    </resources>
-    <plugins>
-      <plugin>
-        <groupId>org.jbehave</groupId>
-        <artifactId>jbehave-maven-plugin</artifactId>
-        <version>${jbehave.core.version}</version>
-        <executions>
-          <execution>
-            <id>unpack-view-resources</id>
-            <phase>process-resources</phase>
-            <goals>
-              <goal>unpack-view-resources</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>embeddable-stories</id>
-            <phase>integration-test</phase>
-            <configuration>
-              <includes>
-                <include>**/*Stories.java</include>
-              </includes>
-              <excludes/>
-              <generateViewAfterStories>true</generateViewAfterStories>
-              <ignoreFailureInStories>true</ignoreFailureInStories>
-              <ignoreFailureInView>true</ignoreFailureInView>
-              <metaFilters>
-                <metaFilter>${meta.filter}</metaFilter>
-              </metaFilters>
-            </configuration>
-            <goals>
-              <goal>run-stories-as-embeddables</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
+    <build>
+        <resources>
+            <resource>
+                <directory>${basedir}/src/main/resources</directory>
+            </resource>
+            <resource>
+                <directory>${basedir}/src/main/stories</directory>
+            </resource>
+        </resources>
+    </build>
+    <profiles>
+        <profile>
+            <id>integration-tests</id>
+            <build>
+                <defaultGoal>integration-test</defaultGoal>
+                <plugins>
+                    <plugin>
+                        <groupId>org.jbehave</groupId>
+                        <artifactId>jbehave-maven-plugin</artifactId>
+                        <version>${jbehave.core.version}</version>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
\ No newline at end of file

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-admin-tests/src/main/stories/deleteNewUser.story
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-admin-tests/src/main/stories/deleteNewUser.story?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-admin-tests/src/main/stories/deleteNewUser.story (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-admin-tests/src/main/stories/deleteNewUser.story Mon Jun  4 16:39:01 2012
@@ -1,3 +1,22 @@
+!--
+!-- 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.
+!--
+
 Meta:
 
 Narrative:

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/pom.xml
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/pom.xml?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/pom.xml (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/pom.xml Mon Jun  4 16:39:01 2012
@@ -18,8 +18,7 @@
   under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.rave.integration-tests</groupId>
   <artifactId>rave-core-tests</artifactId>

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/src/main/java/org/apache/rave/integrationtests/pages/Portal.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/src/main/java/org/apache/rave/integrationtests/pages/Portal.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/src/main/java/org/apache/rave/integrationtests/pages/Portal.java (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/src/main/java/org/apache/rave/integrationtests/pages/Portal.java Mon Jun  4 16:39:01 2012
@@ -32,7 +32,7 @@ import org.springframework.stereotype.Co
  */
 @Component
 public class Portal extends WebDriverPage {
-    private final static int SLEEP_TIME = 1666; //ms
+    private final static int SLEEP_TIME = 3333; //ms
     private final static int MAX_ATTEMPTS = 3;
 
     @Autowired

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/src/main/resources/applicationContext-tests.xml
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/src/main/resources/applicationContext-tests.xml?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/src/main/resources/applicationContext-tests.xml (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-core-tests/src/main/resources/applicationContext-tests.xml Mon Jun  4 16:39:01 2012
@@ -22,16 +22,16 @@
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
-  http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
+  http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context
-  http://www.springframework.org/schema/context/spring-context-3.1.xsd">
+  http://www.springframework.org/schema/context/spring-context.xsd">
 
 
   <context:annotation-config/>
 
   <context:component-scan base-package="org.apache.rave.integrationtests"/>
 
-  <bean id="driverProvider" class="org.jbehave.web.selenium.FirefoxWebDriverProvider"/>
+  <bean id="driverProvider" class="org.jbehave.web.selenium.DefaultWebDriverProvider"/>
 
   <bean id="lifecycleSteps" class="org.apache.rave.integrationtests.steps.LifecycleSteps">
     <constructor-arg ref="driverProvider"/>

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/pom.xml
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/pom.xml?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/pom.xml (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/pom.xml Mon Jun  4 16:39:01 2012
@@ -18,73 +18,52 @@
   under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.rave.integration-tests</groupId>
-  <artifactId>rave-default-account-tests</artifactId>
-  <name>Apache Rave :: rave-default-account-tests</name>
-  <description>Default account portal stories for canonical, john.doe, johnldap and openid</description>
-
-  <parent>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.rave.integration-tests</groupId>
-    <artifactId>rave-integration-tests</artifactId>
-    <version>0.12-model_interfaces-SNAPSHOT</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
+    <artifactId>rave-default-account-tests</artifactId>
+    <name>Apache Rave :: rave-default-account-tests</name>
+    <description>Default account portal stories for canonical, john.doe, johnldap and openid</description>
+
+    <parent>
+        <groupId>org.apache.rave.integration-tests</groupId>
+        <artifactId>rave-integration-tests</artifactId>
+        <version>0.12-model_interfaces-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
 
-  <dependencies>
-    <!-- This is the core tests jar that we just made in a previous module -->
-    <dependency>
-      <groupId>org.apache.rave.integration-tests</groupId>
-      <artifactId>rave-core-tests</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
+    <dependencies>
+        <!-- This is the core tests jar that we just made in a previous module -->
+        <dependency>
+            <groupId>org.apache.rave.integration-tests</groupId>
+            <artifactId>rave-core-tests</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 
-  <build>
-    <resources>
-      <resource>
-        <directory>${basedir}/src/main/resources</directory>
-      </resource>
-      <resource>
-        <directory>${basedir}/src/main/stories</directory>
-      </resource>
-    </resources>
-    <plugins>
-      <plugin>
-        <groupId>org.jbehave</groupId>
-        <artifactId>jbehave-maven-plugin</artifactId>
-        <version>${jbehave.core.version}</version>
-        <executions>
-          <execution>
-            <id>unpack-view-resources</id>
-            <phase>process-resources</phase>
-            <goals>
-              <goal>unpack-view-resources</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>embeddable-stories</id>
-            <phase>integration-test</phase>
-            <configuration>
-              <includes>
-                <include>**/*Stories.java</include>
-              </includes>
-              <excludes/>
-              <generateViewAfterStories>true</generateViewAfterStories>
-              <ignoreFailureInStories>true</ignoreFailureInStories>
-              <ignoreFailureInView>true</ignoreFailureInView>
-              <metaFilters>
-                <metaFilter>${meta.filter}</metaFilter>
-              </metaFilters>
-            </configuration>
-            <goals>
-              <goal>run-stories-as-embeddables</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
+    <build>
+        <resources>
+            <resource>
+                <directory>${basedir}/src/main/resources</directory>
+            </resource>
+            <resource>
+                <directory>${basedir}/src/main/stories</directory>
+            </resource>
+        </resources>
+    </build>
+    <profiles>
+        <profile>
+            <id>integration-tests</id>
+            <build>
+                <defaultGoal>integration-test</defaultGoal>
+                <plugins>
+                    <plugin>
+                        <groupId>org.jbehave</groupId>
+                        <artifactId>jbehave-maven-plugin</artifactId>
+                        <version>${jbehave.core.version}</version>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
\ No newline at end of file

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/java/org/apache/rave/integrationtests/steps/DefaultAccountSteps.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/java/org/apache/rave/integrationtests/steps/DefaultAccountSteps.java?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/java/org/apache/rave/integrationtests/steps/DefaultAccountSteps.java (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/java/org/apache/rave/integrationtests/steps/DefaultAccountSteps.java Mon Jun  4 16:39:01 2012
@@ -19,14 +19,13 @@
 
 package org.apache.rave.integrationtests.steps;
 
+import org.apache.rave.integrationtests.pages.Portal;
 import org.jbehave.core.annotations.Then;
 import org.jbehave.core.annotations.When;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import org.apache.rave.integrationtests.pages.Portal;
-
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.MatcherAssert.assertThat;
 
@@ -90,4 +89,5 @@ public class DefaultAccountSteps {
         final WebElement title = portal.findElement(By.tagName("title"));
         assertThat(title.getText().trim(), equalTo("Login - Rave"));
 	 }
+
 }

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/canonicalLogin.story
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/canonicalLogin.story?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/canonicalLogin.story (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/canonicalLogin.story Mon Jun  4 16:39:01 2012
@@ -1,3 +1,22 @@
+!--
+!-- 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.
+!--
+
 Meta:
 
 Narrative:

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/johnDoe.story
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/johnDoe.story?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/johnDoe.story (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/johnDoe.story Mon Jun  4 16:39:01 2012
@@ -1,3 +1,22 @@
+!--
+!-- 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.
+!--
+
 Meta:
 
 Narrative:
@@ -12,3 +31,47 @@ When I log in with username "john.doe" a
 Then I see the message "Hello John Doe, welcome to Rave!" for the user "john.doe"
 When I log out
 Then I see the Rave login page
+
+Scenario: John Doe updates his profile
+When I log in with username "john.doe" and password "john.doe"
+And I go to "http://localhost:8080/portal/app/person/john.doe"
+Then I see the email address "john.doe@example.com" on the profile page
+And I see the about me "" on the profile page
+And I see the status "" on the profile page
+When I click on the "profileEdit" button
+Then I can edit the email address
+When I change the email address to "john.doe@example.net"
+And I change the about me to "I'm a test user"
+And I change the status to "It's complicated"
+And I submit the edit profile form
+Then I see the email address "john.doe@example.net" on the profile page
+And I see the about me "I'm a test user" on the profile page
+And I see the status "It's complicated" on the profile page
+When I log out
+
+Scenario: John Doe reverts his profile after logging out and in
+When I log in with username "john.doe" and password "john.doe"
+And I go to "http://localhost:8080/portal/app/person/john.doe"
+Then I see the email address "john.doe@example.net" on the profile page
+And I see the about me "I'm a test user" on the profile page
+And I see the status "It's complicated" on the profile page
+When I click on the "profileEdit" button
+Then I can edit the email address
+When I change the email address to "john.doe@example.com"
+And I change the about me to ""
+And I change the status to ""
+And I submit the edit profile form
+Then I see the email address "john.doe@example.com" on the profile page
+And I see the about me "" on the profile page
+And I see the status "" on the profile page
+When I log out
+
+Scenario: John Doe adds a new page
+When I log in with username "john.doe" and password "john.doe"
+And I click the add page button
+And I enter the title "Auto test"
+And I choose the two column layout
+And I add the page
+Then the new page with title "Auto test" is selected
+When I delete the current page
+When I log out

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/johnLdap.story
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/johnLdap.story?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/johnLdap.story (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/johnLdap.story Mon Jun  4 16:39:01 2012
@@ -1,3 +1,22 @@
+!--
+!-- 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.
+!--
+
 Meta:
 
 Narrative:

Modified: rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/openidLogin.story
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/openidLogin.story?rev=1346029&r1=1346028&r2=1346029&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/openidLogin.story (original)
+++ rave/branches/model_interfaces/rave-integration-tests/rave-default-account-tests/src/main/stories/openidLogin.story Mon Jun  4 16:39:01 2012
@@ -1,3 +1,22 @@
+!--
+!-- 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.
+!--
+
 Meta:
 
 Narrative: