Author: mfranklin
Date: Mon Oct 15 13:00:39 2012
New Revision: 1398274

URL: http://svn.apache.org/viewvc?rev=1398274&view=rev
Log:
Added basic MongoDB Test for page

Added:
    
rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/persistence-applicationContext.xml
   (props changed)
      - copied unchanged from r1397668, 
rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/jpa-applicationContext.xml
    rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/
    rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbPage.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java
    rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/persistence-applicationContext.xml
    rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/
    rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/
    
rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/
    
rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/
    
rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/
    
rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/
    
rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbPageRepositoryTest.java
    rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/
    
rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/portal.properties
      - copied, changed from r1397668, 
rave/branches/mongo/rave-portal/src/test/resources/portal.properties
    
rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/test-applicationContext.xml
      - copied, changed from r1397668, 
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/test-applicationContext.xml
Removed:
    
rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/jpa-applicationContext.xml
Modified:
    rave/branches/mongo/pom.xml
    
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/test-applicationContext.xml
    rave/branches/mongo/rave-components/rave-mongodb/pom.xml
    rave/branches/mongo/rave-portal-dependencies/pom.xml
    
rave/branches/mongo/rave-portal-resources/src/main/resources/portal.properties
    rave/branches/mongo/rave-portal/pom.xml
    rave/branches/mongo/rave-portal/src/test/resources/portal.properties
    
rave/branches/mongo/rave-portal/src/test/resources/test-applicationContext.xml

Modified: rave/branches/mongo/pom.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/pom.xml?rev=1398274&r1=1398273&r2=1398274&view=diff
==============================================================================
--- rave/branches/mongo/pom.xml (original)
+++ rave/branches/mongo/pom.xml Mon Oct 15 13:00:39 2012
@@ -17,7 +17,8 @@
   specific language governing permissions and limitations
   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>
 
@@ -47,6 +48,7 @@
         
<org.springframework.version>3.1.2.RELEASE</org.springframework.version>
         
<org.springframework.security.version>3.1.1.RELEASE</org.springframework.security.version>
         
<org.springframework.mobile.version>1.0.0.RELEASE</org.springframework.mobile.version>
+        
<org.springframework.data.mongodb.version>1.0.3.RELEASE</org.springframework.data.mongodb.version>
         <jstl.version>1.2</jstl.version>
         <javax.servlet.version>2.5</javax.servlet.version>
         <jsp-api.version>2.1</jsp-api.version>
@@ -74,6 +76,7 @@
         <javax.mail.version>1.4.4</javax.mail.version>
         <javax.activation.version>1.1</javax.activation.version>
         <freemarker.version>2.3.18</freemarker.version>
+        <org.mongodb.driver.version>2.9.1</org.mongodb.driver.version>
         <!-- The location of Rave's H2 file DB. No trailing / -->
         <rave.database.location>/tmp/rave_db</rave.database.location>
 
@@ -81,12 +84,11 @@
             $mvn filesync:generate -Dmaven.filesync.override=true -->
         <maven.filesync.override>false</maven.filesync.override>
         <jackson.version>1.8.1</jackson.version>
-        <mongo-driver.version>2.9.1</mongo-driver.version>
 
 
         <!-- default empty javaagent
         if needed you can specify it on the command line with 
-Djavaagent="..." -->
-        <javaagent />
+        <javaagent/>
     </properties>
 
     <repositories>
@@ -160,7 +162,7 @@
                 <version>${project.version}</version>
                 <type>pom</type>
             </dependency>
-             <dependency>
+            <dependency>
                 <groupId>org.apache.rave</groupId>
                 <artifactId>rave-demo-gadgets</artifactId>
                 <version>${project.version}</version>
@@ -214,9 +216,9 @@
                 <version>${org.springframework.version}</version>
             </dependency>
             <dependency>
-              <groupId>org.springframework</groupId>
-              <artifactId>spring-context-support</artifactId>
-              <version>${org.springframework.version}</version>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-context-support</artifactId>
+                <version>${org.springframework.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework</groupId>
@@ -290,9 +292,9 @@
             </dependency>
 
             <dependency>
-               <groupId>org.springframework</groupId>
-               <artifactId>spring-oxm</artifactId>
-               <version>${org.springframework.version}</version>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-oxm</artifactId>
+                <version>${org.springframework.version}</version>
             </dependency>
 
             <dependency>
@@ -301,14 +303,20 @@
                 <version>${org.springframework.version}</version>
             </dependency>
             <dependency>
-                 <groupId>org.springframework.mobile</groupId>
-                 <artifactId>spring-mobile-device</artifactId>
-                 <version>${org.springframework.mobile.version}</version>  
<exclusions>
-                <exclusion>
-                    <groupId>org.springframework</groupId>
-                    <artifactId>spring-web</artifactId>
-                </exclusion>
-            </exclusions>
+                <groupId>org.springframework.mobile</groupId>
+                <artifactId>spring-mobile-device</artifactId>
+                <version>${org.springframework.mobile.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-web</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework.data</groupId>
+                <artifactId>spring-data-mongodb</artifactId>
+                <version>${org.springframework.data.mongodb.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.codehaus.jackson</groupId>
@@ -338,7 +346,7 @@
             <dependency>
                 <groupId>org.mongodb</groupId>
                 <artifactId>mongo-java-driver</artifactId>
-                <version>${mongo-driver.version}</version>
+                <version>${org.mongodb.driver.version}</version>
             </dependency>
 
             <dependency>
@@ -381,10 +389,10 @@
                 <version>${org.openid4java.version}</version>
                 <type>pom</type>
                 <exclusions>
-                   <exclusion>
-                      <groupId>com.google.code.guice</groupId>
-                      <artifactId>guice</artifactId>
-                   </exclusion>
+                    <exclusion>
+                        <groupId>com.google.code.guice</groupId>
+                        <artifactId>guice</artifactId>
+                    </exclusion>
                 </exclusions>
             </dependency>
 
@@ -469,23 +477,23 @@
                 <version>${recaptcha4j.version}</version>
             </dependency>
             <!-- Mail-->
-          <dependency>
-            <groupId>javax.mail</groupId>
-            <artifactId>mail</artifactId>
-            <version>${javax.mail.version}</version>
-            <scope>provided</scope>
-          </dependency>
-          <dependency>
-            <groupId>javax.activation</groupId>
-            <artifactId>activation</artifactId>
-            <version>${javax.activation.version}</version>
-            <scope>provided</scope>
-          </dependency>
-          <dependency>
-            <groupId>org.freemarker</groupId>
-            <artifactId>freemarker</artifactId>
-            <version>${freemarker.version}</version>
-          </dependency>
+            <dependency>
+                <groupId>javax.mail</groupId>
+                <artifactId>mail</artifactId>
+                <version>${javax.mail.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.activation</groupId>
+                <artifactId>activation</artifactId>
+                <version>${javax.activation.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.freemarker</groupId>
+                <artifactId>freemarker</artifactId>
+                <version>${freemarker.version}</version>
+            </dependency>
 
             <!-- ApacheDS (LDAP) -->
             <dependency>
@@ -501,7 +509,7 @@
             </dependency>
 
 
-          <!-- Test -->
+            <!-- Test -->
             <dependency>
                 <groupId>junit</groupId>
                 <artifactId>junit</artifactId>
@@ -597,7 +605,7 @@
                 <plugin>
                     <groupId>org.codehaus.mojo</groupId>
                     <artifactId>cobertura-maven-plugin</artifactId>
-                    <version>${cobertura.version}</version> 
+                    <version>${cobertura.version}</version>
                     <configuration>
                         <formats>
                             <format>html</format>
@@ -623,7 +631,7 @@
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
-                                        <execute />
+                                        <execute/>
                                     </action>
                                 </pluginExecution>
                                 <pluginExecution>
@@ -636,7 +644,7 @@
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
-                                        <execute />
+                                        <execute/>
                                     </action>
                                 </pluginExecution>
                                 <pluginExecution>
@@ -649,7 +657,7 @@
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
-                                        <execute />
+                                        <execute/>
                                     </action>
                                 </pluginExecution>
                                 <pluginExecution>
@@ -663,7 +671,7 @@
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
-                                        <execute />
+                                        <execute/>
                                     </action>
                                 </pluginExecution>
                             </pluginExecutions>
@@ -705,6 +713,15 @@
     </modules>
     <profiles>
         <profile>
+            <id>jpa</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>mongodb</id>
+        </profile>
+        <profile>
             <id>apache-release</id>
             <build>
                 <plugins>

Propchange: 
rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/persistence-applicationContext.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/persistence-applicationContext.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: 
rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/persistence-applicationContext.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/test-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-jpa/src/test/resources/test-applicationContext.xml?rev=1398274&r1=1398273&r2=1398274&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/test-applicationContext.xml
 (original)
+++ 
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/test-applicationContext.xml
 Mon Oct 15 13:00:39 2012
@@ -22,6 +22,6 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            
http://www.springframework.org/schema/beans/spring-beans.xsd";>
 
-    <import resource="classpath:org/apache/rave/jpa-applicationContext.xml"/>
+    <import 
resource="classpath:org/apache/rave/persistence-applicationContext.xml"/>
 
 </beans>
\ No newline at end of file

Modified: rave/branches/mongo/rave-components/rave-mongodb/pom.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/pom.xml?rev=1398274&r1=1398273&r2=1398274&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/pom.xml (original)
+++ rave/branches/mongo/rave-components/rave-mongodb/pom.xml Mon Oct 15 
13:00:39 2012
@@ -35,8 +35,43 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.rave</groupId>
+            <artifactId>rave-core</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.mongodb</groupId>
-            <artifactId>mongodb-java-driver</artifactId>
+            <artifactId>mongo-java-driver</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-mongodb</artifactId>
+        </dependency>
+
+        <!-- Test -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymock</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context-support</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
         </dependency>
     </dependencies>
 

Added: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbPage.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbPage.java?rev=1398274&view=auto
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbPage.java
 (added)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbPage.java
 Mon Oct 15 13:00:39 2012
@@ -0,0 +1,15 @@
+package org.apache.rave.portal.model;
+
+import org.apache.rave.portal.model.impl.PageImpl;
+
+public class MongoDbPage extends PageImpl {
+    private String _ownerId;
+
+    public String get_ownerId() {
+        return _ownerId;
+    }
+
+    public void set_ownerId(String _ownerId) {
+        this._ownerId = _ownerId;
+    }
+}

Added: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java?rev=1398274&view=auto
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java
 (added)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java
 Mon Oct 15 13:00:39 2012
@@ -0,0 +1,92 @@
+package org.apache.rave.portal.repository.impl;
+
+import org.apache.rave.portal.model.*;
+import org.apache.rave.portal.repository.PageRepository;
+import org.apache.rave.util.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Random;
+
+import static org.springframework.data.mongodb.core.query.Criteria.where;
+
+/**
+ */
+@Repository
+public class MongoDbPageRepository implements PageRepository {
+
+    @Autowired
+    private MongoOperations mongoTemplate;
+
+    @Override
+    public List<Page> getAllPages(Long userId, PageType pageType) {
+        List<MongoDbPage> pages = mongoTemplate.find(new 
Query(where("pageType").is(pageType).andOperator(where("owner.id").is(userId))),
 MongoDbPage.class);
+        return CollectionUtils.<Page>toBaseTypedList(pages);
+    }
+
+    @Override
+    public int deletePages(Long userId, PageType pageType) {
+        int count = getAllPages(userId, pageType).size();
+        mongoTemplate.remove(new 
Query(where("pageType").is(pageType).andOperator(where("owner.id").is(userId))),
 MongoDbPage.class);
+        return count;
+    }
+
+    @Override
+    public Page createPageForUser(User user, PageTemplate pt) {
+        return null;
+    }
+
+    @Override
+    public boolean hasPersonPage(long userId) {
+        return getAllPages(userId, PageType.PERSON_PROFILE).size() > 0;
+    }
+
+    @Override
+    public List<PageUser> getPagesForUser(Long userId, PageType pageType) {
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    @Override
+    public PageUser getSingleRecord(Long userId, Long pageId) {
+        return null;
+    }
+
+    @Override
+    public Class<? extends Page> getType() {
+        return MongoDbPage.class;
+    }
+
+    @Override
+    public Page get(long id) {
+        return mongoTemplate.findOne(new Query(where("id").is(id)), 
MongoDbPage.class);
+    }
+
+    @Override
+    public Page save(Page item) {
+        MongoDbPage page;
+        if(item.getId() == null) {
+            page = new MongoDbPage();
+            page.setId(new Random().nextLong());
+        } else {
+            page = (MongoDbPage) get(item.getId());
+            page.setId(item.getId());
+        }
+        page.setMembers(item.getMembers());
+        page.setName(item.getName());
+        page.setOwner(item.getOwner());
+        page.setPageLayout(item.getPageLayout());
+        page.setParentPage(item.getParentPage());
+        page.setRegions(item.getRegions());
+        page.setSubPages(item.getSubPages());
+        mongoTemplate.save(page);
+        return page;
+    }
+
+    @Override
+    public void delete(Page item) {
+        mongoTemplate.remove(new Query(where("id").is(item.getId())), 
MongoDbPage.class);
+    }
+}

Added: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/persistence-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/persistence-applicationContext.xml?rev=1398274&view=auto
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/persistence-applicationContext.xml
 (added)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/persistence-applicationContext.xml
 Mon Oct 15 13:00:39 2012
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+  -->
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns:context="http://www.springframework.org/schema/context";
+       xmlns:tx="http://www.springframework.org/schema/tx";
+       xmlns:p="http://www.springframework.org/schema/p";
+       xmlns:aop="http://www.springframework.org/schema/aop";
+       xmlns:mongo="http://www.springframework.org/schema/data/mongo";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           
http://www.springframework.org/schema/beans/spring-beans.xsd
+        http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context.xsd
+        http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx.xsd
+        http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop.xsd 
http://www.springframework.org/schema/data/mongo 
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd";>
+
+    <!-- make the the portal.properties props available to autowire injectors, 
location of the properties can
+     be overridden by setting a system property "portal.override.properties" 
-->
+    <bean id="portalPropertyPlaceholder" 
class="org.apache.rave.util.OverridablePropertyPlaceholderConfigurer">
+        <property name="systemPropertiesModeName" 
value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
+        <property name="systemPropertyName" 
value="portal.override.properties"/>
+        <property name="location" value="classpath:portal.properties"/>
+    </bean>
+
+    <!-- bean post-processor for JPA annotations -->
+    <context:annotation-config/>
+
+    <!-- enable the use of the @AspectJ style of Spring AOP -->
+    <aop:aspectj-autoproxy/>
+
+    <mongo:mongo id="mongo" host="${portal.mongo.host}" 
port="${portal.mongo.port}"/>
+    <bean id="mongoTemplate" 
class="org.springframework.data.mongodb.core.MongoTemplate">
+        <constructor-arg ref="mongo"/>
+        <constructor-arg name="databaseName" value="rave"/>
+    </bean>
+
+    <!-- rave-common component base-package scan (maybe move to a separate 
common-applicationContext.xml?) -->
+    <context:component-scan base-package="org.apache.rave.service"/>
+    <context:component-scan base-package="org.apache.rave.synchronization"/>
+
+    <!-- rave-core component base-package scan -->
+    <context:component-scan base-package="org.apache.rave.portal.model"/>
+    <context:component-scan base-package="org.apache.rave.portal.repository"/>
+
+    <!-- Password encoding -->
+    <bean 
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" 
id="passwordEncoder">
+        <!--<constructor-arg index="0" value="10"/>-->
+    </bean>
+
+    <!-- email settings -->
+    <bean id="emailServiceMailMessage" 
class="org.springframework.mail.SimpleMailMessage">
+        <property name="from" value="${portal.mail.sender}"/>
+        <property name="replyTo" value="${portal.mail.replyto}"/>
+    </bean>
+
+    <bean id="freemarkerMailConfiguration" 
class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
+        <property name="templateLoaderPath" value="/WEB-INF/mailtemplates"/>
+    </bean>
+    <bean id="mailSender" 
class="org.springframework.mail.javamail.JavaMailSenderImpl">
+        <property name="host" value="${portal.mail.host}"/>
+        <property name="password" value="${portal.mail.password}"/>
+        <property name="username" value="${portal.mail.username}"/>
+        <property name="port" value="${portal.mail.port}"/>
+        <property name="protocol" value="${portal.mail.protocol}"/>
+        <!-- NOTE: if using Gmail, you'll need following properties-->
+        <!--<property name="javaMailProperties">
+            <props>
+                <prop key="mail.smtp.auth">true</prop>
+                <prop key="mail.smtp.starttls.enable">true</prop>
+                <prop key="mail.smtp.timeout">8500</prop>
+            </props>
+        </property>-->
+    </bean>
+    <!--
+    NOTE: to use mail session you'll need to configure following within 
catalina_home/conf/context.xml
+    <Resource name="mail/Session" auth="Container" type="javax.mail.Session" 
mail.smtp.host="my.mail.host"/>
+
+    Further, activation & mail jars needs to be placed within 
catalina_home/lib folder
+    -->
+    <!--
+    <bean id="mailSender" 
class="org.springframework.mail.javamail.JavaMailSenderImpl">
+        <property name="session" ref="mailSession"/>
+    </bean>
+    <bean id="mailSession" 
class="org.springframework.jndi.JndiObjectFactoryBean">
+        <property name="jndiName" value="java:comp/env/mail/Session"/>
+    </bean>
+    -->
+
+    <bean id="restTemplate" 
class="org.springframework.web.client.RestTemplate" />
+
+    <bean id="staticContentCache" 
class="org.apache.rave.service.impl.DefaultStaticContentFetcherService">
+        <constructor-arg ref="restTemplate"/>
+        <constructor-arg>
+            <list>
+                <!-- example of a Static Content source that doesn't have any 
string token placeholders in its content body
+                <bean class="org.apache.rave.model.StaticContent">
+                    <constructor-arg index="0" value="standardCompanyHeader"/>
+                    <constructor-arg index="1" 
value="${company.header.host}/content/standard_header.html"/>
+                    <constructor-arg index="2">
+                        <null/>
+                    </constructor-arg>
+                </bean>
+                -->
+                <!-- example of a Static Content source that has string token 
placeholders
+                <bean class="org.apache.rave.model.StaticContent">
+                    <constructor-arg index="0" 
value="environmentSpecificContent"/>
+                    <constructor-arg index="1" 
value="${company.header.host}/content/footer.html"/>
+                    <constructor-arg index="2">
+                        <map>
+                            <entry key="\{supportEmail\}" 
value="${raveproperty.supportemail}"/>
+                            <entry key="\{productVersion\}" 
value="${raveproperty.version}"/>
+                        </map>
+                    </constructor-arg>
+                </bean>
+                -->
+            </list>
+        </constructor-arg>
+    </bean>
+
+    <!-- example on how to setup a Spring Timer to refresh the Static Content 
cache at a fixed interval
+    <bean id="refreshStaticContentCacheScheduledTask" 
class="org.springframework.scheduling.timer.ScheduledTimerTask">
+        <property name="delay" value="5000"/>
+        <property name="period" value="300000"/>
+        <property name="timerTask">
+            <bean 
class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean"
+                  p:targetObject-ref="staticContentCache" 
p:targetMethod="refreshAll"/>
+        </property>
+    </bean>
+    <bean id="timerFactory" 
class="org.springframework.scheduling.timer.TimerFactoryBean">
+        <property name="daemon" value="true"/>
+        <property name="scheduledTimerTasks">
+            <list>
+                <ref local="refreshStaticContentCacheScheduledTask"/>
+            </list>
+        </property>
+    </bean>
+    -->
+</beans>
\ No newline at end of file

Added: 
rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbPageRepositoryTest.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbPageRepositoryTest.java?rev=1398274&view=auto
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbPageRepositoryTest.java
 (added)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbPageRepositoryTest.java
 Mon Oct 15 13:00:39 2012
@@ -0,0 +1,73 @@
+package org.apache.rave.portal.repository.impl;
+
+import com.google.common.collect.Lists;
+import org.apache.rave.portal.model.*;
+import org.apache.rave.portal.model.impl.*;
+import org.apache.rave.portal.repository.PageRepository;
+import org.junit.Ignore;
+import org.junit.Test;
+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 static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: mfranklin
+ * Date: 10/14/12
+ * Time: 8:14 PM
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = {"classpath:test-applicationContext.xml"})
+public class MongoDbPageRepositoryTest {
+
+    @Autowired
+    PageRepository repository;
+
+    @Test
+    @Ignore
+    public void MongoTest() {
+        Page page = new PageImpl();
+        //PageUser p = new PageUserImpl(new UserImpl(12345L), page);
+        page.setName("PAGE NAME");
+        page.setMembers(Lists.<PageUser>newLinkedList());
+        //page.getMembers().add(p);
+        page.setOwner(new UserImpl(123456L));
+        page.setRegions(Lists.<Region>newLinkedList());
+
+        Region region = new RegionImpl();
+        //region.setPage(page);
+        region.setRegionWidgets(Lists.<RegionWidget>newLinkedList());
+        page.getRegions().add(region);
+
+        RegionWidget regionWidget = new RegionWidgetImpl();
+        //regionWidget.setRegion(region);
+        
regionWidget.setPreferences(Lists.<RegionWidgetPreference>newLinkedList());
+        region.getRegionWidgets().add(regionWidget);
+
+        RegionWidgetPreference preference = new RegionWidgetPreferenceImpl();
+        preference.setName("PREF NAME");
+        preference.setValue("PREF_VALUE");
+        regionWidget.getPreferences().add(preference);
+
+        Widget widget = new WidgetImpl(13223L);
+        regionWidget.setWidget(widget);
+
+        page.setPageType(PageType.USER);
+        page.setPageLayout(new PageLayoutImpl("LAYOUT"));
+
+        Page saved = repository.save(page);
+        assertThat(saved, instanceOf(MongoDbPage.class));
+
+        Page fromDb = repository.get(saved.getId());
+        //assertThat(fromDb.getMembers().get(0), 
is(equalTo(saved.getMembers().get(0))));
+        assertThat(fromDb.getRegions().get(0), 
is(equalTo(saved.getRegions().get(0))));
+        assertThat(fromDb.getRegions().get(0).getRegionWidgets().get(0), 
is(equalTo(saved.getRegions().get(0).getRegionWidgets().get(0))));
+        
assertThat(fromDb.getRegions().get(0).getRegionWidgets().get(0).getPreferences().get(0),
 
is(equalTo(saved.getRegions().get(0).getRegionWidgets().get(0).getPreferences().get(0))));
+    }
+}

Copied: 
rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/portal.properties
 (from r1397668, 
rave/branches/mongo/rave-portal/src/test/resources/portal.properties)
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/portal.properties?p2=rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/portal.properties&p1=rave/branches/mongo/rave-portal/src/test/resources/portal.properties&r1=1397668&r2=1398274&rev=1398274&view=diff
==============================================================================
--- rave/branches/mongo/rave-portal/src/test/resources/portal.properties 
(original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/portal.properties
 Mon Oct 15 13:00:39 2012
@@ -50,6 +50,12 @@ portal.openjpa.RuntimeUnenhancedClasses=
 portal.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
 portal.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, 
JoinForeignKeyDeleteAction=restrict
 
+###################################################################
+# Properties related to the Rave MongoDB implementation               #
+###################################################################
+portal.mongo.host=localhost
+portal.mongo.port=27017
+
 provider.wookie.wookieServerUrl=http://localhost:8080/wookie
 provider.wookie.wookieApiKey=TEST
 # captcha settings

Copied: 
rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/test-applicationContext.xml
 (from r1397668, 
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/test-applicationContext.xml)
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/test-applicationContext.xml?p2=rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/test-applicationContext.xml&p1=rave/branches/mongo/rave-components/rave-jpa/src/test/resources/test-applicationContext.xml&r1=1397668&r2=1398274&rev=1398274&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/test-applicationContext.xml
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/test-applicationContext.xml
 Mon Oct 15 13:00:39 2012
@@ -22,6 +22,6 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            
http://www.springframework.org/schema/beans/spring-beans.xsd";>
 
-    <import resource="classpath:org/apache/rave/jpa-applicationContext.xml"/>
+    <import 
resource="classpath:org/apache/rave/persistence-applicationContext.xml"/>
 
 </beans>
\ No newline at end of file

Modified: rave/branches/mongo/rave-portal-dependencies/pom.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal-dependencies/pom.xml?rev=1398274&r1=1398273&r2=1398274&view=diff
==============================================================================
--- rave/branches/mongo/rave-portal-dependencies/pom.xml (original)
+++ rave/branches/mongo/rave-portal-dependencies/pom.xml Mon Oct 15 13:00:39 
2012
@@ -46,6 +46,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.rave</groupId>
+            <artifactId>rave-jpa</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rave</groupId>
             <artifactId>rave-web</artifactId>
         </dependency>
         <dependency>
@@ -64,6 +68,16 @@
         </dependency>
 
         <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-jdbc</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-orm</artifactId>
+        </dependency>
+
+        <dependency>
             <groupId>org.springframework.security</groupId>
             <artifactId>spring-security-web</artifactId>
         </dependency>
@@ -130,37 +144,4 @@
 
     </dependencies>
 
-    <profiles>
-        <profile>
-            <id>jpa</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.apache.rave</groupId>
-                    <artifactId>rave-jpa</artifactId>
-                </dependency>
-                <dependency>
-                    <groupId>org.springframework</groupId>
-                    <artifactId>spring-jdbc</artifactId>
-                </dependency>
-                <dependency>
-                    <groupId>org.springframework</groupId>
-                    <artifactId>spring-orm</artifactId>
-                </dependency>
-
-            </dependencies>
-        </profile>
-        <profile>
-            <id>mongodb</id>
-            <dependencies>
-                <dependency>
-                    <groupId>org.apache.rave</groupId>
-                    <artifactId>rave-mongodb</artifactId>
-                </dependency>
-            </dependencies>
-        </profile>
-    </profiles>
-
 </project>

Modified: 
rave/branches/mongo/rave-portal-resources/src/main/resources/portal.properties
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal-resources/src/main/resources/portal.properties?rev=1398274&r1=1398273&r2=1398274&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-portal-resources/src/main/resources/portal.properties 
(original)
+++ 
rave/branches/mongo/rave-portal-resources/src/main/resources/portal.properties 
Mon Oct 15 13:00:39 2012
@@ -35,7 +35,11 @@ portal.opensocial_security.domain=defaul
 # the default page name to create for new users
 portal.page.default_name=Main
 
-#Default Rave Portal database settings with in memory H2 database
+###################################################################
+# Properties related to the Rave JPA implementation               #
+###################################################################
+
+# Default Rave Portal database settings with in memory H2 database
 # rave.database.location is replaced during the build
 portal.dataSource.url=jdbc:h2:${rave.database.location};AUTO_SERVER=TRUE
 portal.dataSource.driver=org.h2.Driver
@@ -53,6 +57,14 @@ portal.openjpa.RuntimeUnenhancedClasses=
 portal.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
 portal.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, 
JoinForeignKeyDeleteAction=restrict
 
+
+###################################################################
+# Properties related to the Rave MongoDB implementation               #
+###################################################################
+portal.mongo.host=localhost
+portal.mongo.port=27017
+
+
 provider.wookie.wookieServerUrl=http://localhost:8080/wookie
 provider.wookie.wookieApiKey=TEST
 provider.wookie.adminUsername=

Modified: rave/branches/mongo/rave-portal/pom.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal/pom.xml?rev=1398274&r1=1398273&r2=1398274&view=diff
==============================================================================
--- rave/branches/mongo/rave-portal/pom.xml (original)
+++ rave/branches/mongo/rave-portal/pom.xml Mon Oct 15 13:00:39 2012
@@ -59,6 +59,7 @@
             <artifactId>rave-portal-dependencies</artifactId>
             <type>pom</type>
         </dependency>
+
         <dependency>
             <groupId>org.apache.rave</groupId>
             <artifactId>rave-portal-resources</artifactId>
@@ -204,7 +205,7 @@
                             <!--  un-comment following property for: Loading 
the SizeOfAgent will probably fail,
                             as you are running on Apple OS X and have a value 
set for java.io.tmpdir  -->
                             <!-- 
<net.sf.ehcache.pool.sizeof.AgentSizeOf.bypass>true</net.sf.ehcache.pool.sizeof.AgentSizeOf.bypass>
  -->
-                         
+
                           <!-- Documentation: 
http://rave.apache.org/documentation/host-configuration.html -->
                             <!--
                                 
<portal.override.properties>/path/to/custom.portal.properties</portal.override.properties>
@@ -287,6 +288,25 @@
                 </plugins>
             </build>
         </profile>
+            <profile>
+                <id>mongodb</id>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.apache.rave</groupId>
+                        <artifactId>rave-portal-dependencies</artifactId>
+                        <type>pom</type>
+                        <exclusions>
+                            <exclusion>
+                                <groupId>org.apache.rave</groupId>
+                                <artifactId>rave-jpa</artifactId>
+                            </exclusion>
+                        </exclusions>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.apache.rave</groupId>
+                        <artifactId>rave-mongodb</artifactId>
+                    </dependency>
+                </dependencies>
+            </profile>
     </profiles>
-
 </project>

Modified: rave/branches/mongo/rave-portal/src/test/resources/portal.properties
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal/src/test/resources/portal.properties?rev=1398274&r1=1398273&r2=1398274&view=diff
==============================================================================
--- rave/branches/mongo/rave-portal/src/test/resources/portal.properties 
(original)
+++ rave/branches/mongo/rave-portal/src/test/resources/portal.properties Mon 
Oct 15 13:00:39 2012
@@ -50,6 +50,12 @@ portal.openjpa.RuntimeUnenhancedClasses=
 portal.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
 portal.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, 
JoinForeignKeyDeleteAction=restrict
 
+###################################################################
+# Properties related to the Rave MongoDB implementation               #
+###################################################################
+portal.mongo.host=localhost
+portal.mongo.port=27017
+
 provider.wookie.wookieServerUrl=http://localhost:8080/wookie
 provider.wookie.wookieApiKey=TEST
 # captcha settings

Modified: 
rave/branches/mongo/rave-portal/src/test/resources/test-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal/src/test/resources/test-applicationContext.xml?rev=1398274&r1=1398273&r2=1398274&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-portal/src/test/resources/test-applicationContext.xml 
(original)
+++ 
rave/branches/mongo/rave-portal/src/test/resources/test-applicationContext.xml 
Mon Oct 15 13:00:39 2012
@@ -23,7 +23,7 @@
                            
http://www.springframework.org/schema/beans/spring-beans.xsd";>
 
     <import resource="classpath:org/apache/rave/core-applicationContext.xml"/>
-    <import resource="classpath:org/apache/rave/jpa-applicationContext.xml"/>
+    <import 
resource="classpath:org/apache/rave/persistence-applicationContext.xml"/>
     <import resource="classpath:org/apache/rave/web-applicationContext.xml"/>
     <import 
resource="classpath:org/apache/rave/opensocial-provider-applicationContext.xml"/>
 


Reply via email to