Author: mfranklin
Date: Thu Oct 18 01:32:02 2012
New Revision: 1399504

URL: http://svn.apache.org/viewvc?rev=1399504&view=rev
Log:
Added initial data from js

Added:
    rave/branches/mongo/UPGRADING
    
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/
    
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
    
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/ModelWrapper.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/PageLayoutImplConverter.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/PageTemplateImplConverter.java
      - copied, changed from r1399029, 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongDbPageTemplateConverter.java
    rave/branches/mongo/rave-portal-resources/src/main/resources/initial-data.js
Removed:
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongDbPageTemplateConverter.java
Modified:
    rave/branches/mongo/pom.xml
    rave/branches/mongo/rave-components/rave-core/pom.xml
    
rave/branches/mongo/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml
    
rave/branches/mongo/rave-components/rave-core/src/test/resources/portal.properties
    
rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/persistence-applicationContext.xml
    
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/portal.properties
    
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/test-applicationContext.xml
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageLayoutRepository.java
    
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/resources/portal.properties
    
rave/branches/mongo/rave-portal-resources/src/main/resources/portal.properties
    
rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/applicationContext.xml
    
rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/dataContext.xml
    rave/branches/mongo/rave-portal/src/test/resources/portal.properties
    
rave/branches/mongo/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/resources/rave.shindig.properties
    
rave/branches/mongo/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave-shindig-applicationContext.xml
    
rave/branches/mongo/rave-providers/rave-opensocial-provider/rave-opensocial-server/rave-shindig/src/main/resources/rave.shindig.properties

Added: rave/branches/mongo/UPGRADING
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/UPGRADING?rev=1399504&view=auto
==============================================================================
--- rave/branches/mongo/UPGRADING (added)
+++ rave/branches/mongo/UPGRADING Thu Oct 18 01:32:02 2012
@@ -0,0 +1,4 @@
+Upgrading from 0.17 to 0.18
+=======================================
+  - rave.shindig.properties & portal.properties keys have been changed for JPA 
operations.  The prefix is now jpa.xxx.xxxx
+  - the MongoDB implementation has properties added to rave.shindig.properties 
and portal.properties
\ No newline at end of file

Modified: rave/branches/mongo/pom.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/pom.xml?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- rave/branches/mongo/pom.xml (original)
+++ rave/branches/mongo/pom.xml Thu Oct 18 01:32:02 2012
@@ -320,6 +320,11 @@
             </dependency>
             <dependency>
                 <groupId>org.codehaus.jackson</groupId>
+                <artifactId>jackson-mapper-asl</artifactId>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.jackson</groupId>
                 <artifactId>jackson-mrbean</artifactId>
                 <version>${jackson.version}</version>
             </dependency>

Modified: rave/branches/mongo/rave-components/rave-core/pom.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-core/pom.xml?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-core/pom.xml (original)
+++ rave/branches/mongo/rave-components/rave-core/pom.xml Thu Oct 18 01:32:02 
2012
@@ -91,7 +91,11 @@
         <dependency>
             <groupId>org.codehaus.jackson</groupId>
             <artifactId>jackson-mapper-asl</artifactId>
-            <version>1.8.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-mrbean</artifactId>
+            <scope>provided</scope>
         </dependency>
 
         <!-- JSON Support -->

Added: 
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java?rev=1399504&view=auto
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
 (added)
+++ 
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
 Thu Oct 18 01:32:02 2012
@@ -0,0 +1,146 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.rave.portal.util.data;
+
+import org.apache.rave.portal.model.*;
+import org.apache.rave.portal.repository.*;
+import org.codehaus.jackson.map.AnnotationIntrospector;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
+import org.codehaus.jackson.mrbean.MrBeanModule;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.Resource;
+
+import javax.annotation.PostConstruct;
+import java.io.IOException;
+import java.util.List;
+
+public class DataImporter {
+
+    //TODO GROUP REPOSITORY
+
+    @Autowired
+    private PageLayoutRepository pageLayoutRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private WidgetRepository widgetRepository;
+
+    @Autowired
+    private PageRepository pageRepository;
+
+    @Autowired
+    private AuthorityRepository authorityRepository;
+
+    @Autowired
+    private PortalPreferenceRepository portalPreferenceRepository;
+
+    @Autowired
+    private CategoryRepository categoryRepository;
+
+    @Autowired
+    private PageTemplateRepository pageTemplateRepository;
+
+    private List<Resource> scriptLocations;
+
+    public List<Resource> getScriptLocations() {
+        return scriptLocations;
+    }
+
+    public void setScriptLocations(List<Resource> scriptLocations) {
+        this.scriptLocations = scriptLocations;
+    }
+
+    @PostConstruct
+    public void importData() {
+        if (scriptLocations != null) {
+            for (Resource resource : scriptLocations) {
+                ModelWrapper wrapper = mapObject(resource);
+                if (wrapper.getPageLayouts() != null) {
+                    for (PageLayout layout : wrapper.getPageLayouts()) {
+                        pageLayoutRepository.save(layout);
+                    }
+                }
+                if (wrapper.getUsers() != null) {
+                    for (User user : wrapper.getUsers()) {
+                        userRepository.save(user);
+                    }
+                }
+                if (wrapper.getPageLayouts() != null) {
+                    for (PageLayout layout : wrapper.getPageLayouts()) {
+                        pageLayoutRepository.save(layout);
+                    }
+                }
+                if (wrapper.getWidgets() != null) {
+                    for (Widget widget : wrapper.getWidgets()) {
+                        widgetRepository.save(widget);
+                    }
+                }
+                if (wrapper.getPages() != null) {
+                    for (Page page : wrapper.getPages()) {
+                        pageRepository.save(page);
+                    }
+                }
+                if (wrapper.getAuthorities() != null) {
+                    for (Authority authority : wrapper.getAuthorities()) {
+                        authorityRepository.save(authority);
+                    }
+                }
+                if (wrapper.getPortalPreferences() != null) {
+                    for (PortalPreference preference : 
wrapper.getPortalPreferences()) {
+                        portalPreferenceRepository.save(preference);
+                    }
+                }
+                if (wrapper.getCategories() != null) {
+                    for (Category category : wrapper.getCategories()) {
+                        categoryRepository.save(category);
+                    }
+                }
+/*              TODO Update PageTemplateRepository
+                for(PortalPreference preference : 
wrapper.getPortalPreferences()) {
+                    pageTemplateRepository.save(preference);
+                }*/
+            }
+        }
+
+    }
+
+    private ModelWrapper mapObject(Resource resource) {
+        try {
+            return getMapper().readValue(resource.getFile(), 
ModelWrapper.class);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private ObjectMapper getMapper() {
+        ObjectMapper jacksonMapper = new ObjectMapper();
+        AnnotationIntrospector primary = new JacksonAnnotationIntrospector();
+        jacksonMapper.setAnnotationIntrospector(primary);
+        
jacksonMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,
 false);
+        jacksonMapper.registerModule(new MrBeanModule());
+        return jacksonMapper;
+    }
+
+
+}

Added: 
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/ModelWrapper.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/ModelWrapper.java?rev=1399504&view=auto
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/ModelWrapper.java
 (added)
+++ 
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/ModelWrapper.java
 Thu Oct 18 01:32:02 2012
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.rave.portal.util.data;
+
+import org.apache.rave.portal.model.*;
+
+import java.util.List;
+
+public class ModelWrapper {
+    private List<PageLayout> pageLayouts;
+    private List<User> users;
+    private List<Group> groups;
+    private List<Widget> widgets;
+    private List<Page> pages;
+    private List<Authority> authorities;
+    private List<PortalPreference> portalPreferences;
+    private List<Category> categories;
+    private List<PageTemplate> pageTemplates;
+
+    public List<PageLayout> getPageLayouts() {
+        return pageLayouts;
+    }
+
+    public void setPageLayouts(List<PageLayout> pageLayouts) {
+        this.pageLayouts = pageLayouts;
+    }
+
+    public List<User> getUsers() {
+        return users;
+    }
+
+    public void setUsers(List<User> users) {
+        this.users = users;
+    }
+
+    public List<Group> getGroups() {
+        return groups;
+    }
+
+    public void setGroups(List<Group> groups) {
+        this.groups = groups;
+    }
+
+    public List<Widget> getWidgets() {
+        return widgets;
+    }
+
+    public void setWidgets(List<Widget> widgets) {
+        this.widgets = widgets;
+    }
+
+    public List<Page> getPages() {
+        return pages;
+    }
+
+    public void setPages(List<Page> pages) {
+        this.pages = pages;
+    }
+
+    public List<Authority> getAuthorities() {
+        return authorities;
+    }
+
+    public void setAuthorities(List<Authority> authorities) {
+        this.authorities = authorities;
+    }
+
+    public List<PortalPreference> getPortalPreferences() {
+        return portalPreferences;
+    }
+
+    public void setPortalPreferences(List<PortalPreference> portalPreferences) 
{
+        this.portalPreferences = portalPreferences;
+    }
+
+    public List<Category> getCategories() {
+        return categories;
+    }
+
+    public void setCategories(List<Category> categories) {
+        this.categories = categories;
+    }
+
+    public List<PageTemplate> getPageTemplates() {
+        return pageTemplates;
+    }
+
+    public void setPageTemplates(List<PageTemplate> pageTemplates) {
+        this.pageTemplates = pageTemplates;
+    }
+}
\ No newline at end of file

Modified: 
rave/branches/mongo/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml
 (original)
+++ 
rave/branches/mongo/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml
 Thu Oct 18 01:32:02 2012
@@ -50,13 +50,6 @@
     <context:component-scan base-package="org.apache.rave.portal.service"/>
     <context:component-scan base-package="org.apache.rave.portal.security"/>
 
-    <bean id="dataSource" 
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
-        <property name="url" value="${portal.dataSource.url}"/>
-        <property name="driverClassName" value="${portal.dataSource.driver}"/>
-        <property name="username" value="${portal.dataSource.username}"/>
-        <property name="password" value="${portal.dataSource.password}"/>
-    </bean>
-
     <!-- Password encoding -->
     <bean 
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" 
id="passwordEncoder">
         <!--<constructor-arg index="0" value="10"/>-->

Modified: 
rave/branches/mongo/rave-components/rave-core/src/test/resources/portal.properties
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-core/src/test/resources/portal.properties?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-core/src/test/resources/portal.properties
 (original)
+++ 
rave/branches/mongo/rave-components/rave-core/src/test/resources/portal.properties
 Thu Oct 18 01:32:02 2012
@@ -21,21 +21,21 @@
 portal.page.default_name=Main
 
 #Default Rave Portal database settings with in memory H2 database
-portal.dataSource.url=jdbc:h2:mem:portal;DB_CLOSE_DELAY=-1
-portal.dataSource.driver=org.h2.Driver
-portal.dataSource.username=sa
-portal.dataSource.password=local
-
-portal.jpaDialect=org.apache.rave.persistence.jpa.impl.H2OpenJpaDialect
-portal.jpaVendorAdapter.databasePlatform=org.apache.openjpa.jdbc.sql.H2Dictionary
-portal.jpaVendorAdapter.database=H2
+jpa.dataSource.url=jdbc:h2:mem:portal;DB_CLOSE_DELAY=-1
+jpa.dataSource.driver=org.h2.Driver
+jpa.dataSource.username=sa
+jpa.dataSource.password=local
+
+jpa.jpaDialect=org.apache.rave.persistence.jpa.impl.H2OpenJpaDialect
+jpa.jpaVendorAdapter.databasePlatform=org.apache.openjpa.jdbc.sql.H2Dictionary
+jpa.jpaVendorAdapter.database=H2
 
 # General Rave portal database settings
-portal.jpaVendorAdapter.showSql=true
-portal.openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=WARN
-portal.openjpa.RuntimeUnenhancedClasses=supported
-portal.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
-portal.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, 
JoinForeignKeyDeleteAction=restrict
+jpa.jpaVendorAdapter.showSql=true
+jpa.openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=WARN
+jpa.openjpa.RuntimeUnenhancedClasses=supported
+jpa.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
+jpa.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, 
JoinForeignKeyDeleteAction=restrict
 
 provider.wookie.wookieServerUrl=http://localhost:8080/wookie
 provider.wookie.wookieApiKey=TEST

Modified: 
rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/persistence-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/persistence-applicationContext.xml?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/persistence-applicationContext.xml
 (original)
+++ 
rave/branches/mongo/rave-components/rave-jpa/src/main/resources/org/apache/rave/persistence-applicationContext.xml
 Thu Oct 18 01:32:02 2012
@@ -29,27 +29,6 @@
         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";>
 
-    <!-- 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/>
-
-    <!-- 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"/>
 
     <bean id="transactionManager" 
class="org.springframework.orm.jpa.JpaTransactionManager">
         <property name="entityManagerFactory" ref="entityManagerFactory"/>
@@ -67,121 +46,27 @@
         <property name="dataSource" ref="dataSource"/>
         <property name="jpaVendorAdapter">
             <bean 
class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter"
-                  
p:databasePlatform="${portal.jpaVendorAdapter.databasePlatform}"
-                  p:database="${portal.jpaVendorAdapter.database}"
-                  p:showSql="${portal.jpaVendorAdapter.showSql}"/>
+                  p:databasePlatform="${jpa.jpaVendorAdapter.databasePlatform}"
+                  p:database="${jpa.jpaVendorAdapter.database}"
+                  p:showSql="${jpa.jpaVendorAdapter.showSql}"/>
         </property>
         <property name="jpaDialect">
-            <bean class="${portal.jpaDialect}"/>
+            <bean class="${jpa.jpaDialect}"/>
         </property>
         <property name="jpaPropertyMap">
             <map>
-                <entry key="openjpa.Log" value="${portal.openjpa.Log}"/>
-                <entry key="openjpa.RuntimeUnenhancedClasses" 
value="${portal.openjpa.RuntimeUnenhancedClasses}"/>
-                <entry key="openjpa.jdbc.SynchronizeMappings" 
value="${portal.openjpa.jdbc.SynchronizeMappings}"/>
-                <entry key="openjpa.jdbc.MappingDefaults" 
value="${portal.openjpa.jdbc.MappingDefaults}"/>
+                <entry key="openjpa.Log" value="${jpa.openjpa.Log}"/>
+                <entry key="openjpa.RuntimeUnenhancedClasses" 
value="${jpa.openjpa.RuntimeUnenhancedClasses}"/>
+                <entry key="openjpa.jdbc.SynchronizeMappings" 
value="${jpa.openjpa.jdbc.SynchronizeMappings}"/>
+                <entry key="openjpa.jdbc.MappingDefaults" 
value="${jpa.openjpa.jdbc.MappingDefaults}"/>
             </map>
         </property>
     </bean>
 
     <bean id="dataSource" 
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
-        <property name="url" value="${portal.dataSource.url}"/>
-        <property name="driverClassName" value="${portal.dataSource.driver}"/>
-        <property name="username" value="${portal.dataSource.username}"/>
-        <property name="password" value="${portal.dataSource.password}"/>
-    </bean>
-
-    <!-- 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>
+        <property name="url" value="${jpa.dataSource.url}"/>
+        <property name="driverClassName" value="${jpa.dataSource.driver}"/>
+        <property name="username" value="${jpa.dataSource.username}"/>
+        <property name="password" value="${jpa.dataSource.password}"/>
     </bean>
-    -->
 </beans>
\ No newline at end of file

Modified: 
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/portal.properties
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-jpa/src/test/resources/portal.properties?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/portal.properties
 (original)
+++ 
rave/branches/mongo/rave-components/rave-jpa/src/test/resources/portal.properties
 Thu Oct 18 01:32:02 2012
@@ -20,22 +20,23 @@
 # the default page name to create for new users
 portal.page.default_name=Main
 
+
 #Default Rave Portal database settings with in memory H2 database
-portal.dataSource.url=jdbc:h2:mem:portal;DB_CLOSE_DELAY=-1
-portal.dataSource.driver=org.h2.Driver
-portal.dataSource.username=sa
-portal.dataSource.password=local
-
-portal.jpaDialect=org.apache.rave.persistence.jpa.impl.H2OpenJpaDialect
-portal.jpaVendorAdapter.databasePlatform=org.apache.openjpa.jdbc.sql.H2Dictionary
-portal.jpaVendorAdapter.database=H2
-
-# General Rave portal database settings
-portal.jpaVendorAdapter.showSql=true
-portal.openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=WARN
-portal.openjpa.RuntimeUnenhancedClasses=supported
-portal.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
-portal.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, 
JoinForeignKeyDeleteAction=restrict
+jpa.dataSource.url=jdbc:h2:mem:portal;DB_CLOSE_DELAY=-1
+jpa.dataSource.driver=org.h2.Driver
+jpa.dataSource.username=sa
+jpa.dataSource.password=local
+
+jpa.jpaDialect=org.apache.rave.persistence.jpa.impl.H2OpenJpaDialect
+jpa.jpaVendorAdapter.databasePlatform=org.apache.openjpa.jdbc.sql.H2Dictionary
+jpa.jpaVendorAdapter.database=H2
+
+# General Rave jpa database settings
+jpa.jpaVendorAdapter.showSql=true
+jpa.openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=WARN
+jpa.openjpa.RuntimeUnenhancedClasses=unsupported
+jpa.openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
+jpa.openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict, 
JoinForeignKeyDeleteAction=restrict
 
 provider.wookie.wookieServerUrl=http://localhost:8080/wookie
 provider.wookie.wookieApiKey=TEST

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=1399504&r1=1399503&r2=1399504&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
 Thu Oct 18 01:32:02 2012
@@ -19,8 +19,128 @@
 
 <beans xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       xsi:schemaLocation="http://www.springframework.org/schema/beans
-                           
http://www.springframework.org/schema/beans/spring-beans.xsd";>
+       xmlns:context="http://www.springframework.org/schema/context";
+       xmlns:aop="http://www.springframework.org/schema/aop";
+       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-3.1.xsd
+                           http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop.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/>
+
+    <!-- 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>
+    -->
 
     <import 
resource="classpath:org/apache/rave/persistence-applicationContext.xml"/>
 

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java
 Thu Oct 18 01:32:02 2012
@@ -55,7 +55,7 @@ public class MongoDbCategoryConverter im
 
     @Override
     public MongoDbCategory convert(Category source) {
-        MongoDbCategory category = source instanceof MongoDbCategory ? 
((MongoDbCategory)source) : new MongoDbCategory();
+        MongoDbCategory category = source instanceof MongoDbCategory ? 
((MongoDbCategory) source) : new MongoDbCategory();
         category.setCreatedUserId(source.getCreatedUser().getId());
         category.setCreatedUser(null);
         category.setLastModifiedUserId(source.getLastModifiedUser().getId());
@@ -65,8 +65,10 @@ public class MongoDbCategoryConverter im
         category.setText(source.getText());
         ArrayList<Long> widgetIds = Lists.<Long>newArrayList();
         category.setWidgetIds(widgetIds);
-        for(Widget widget : source.getWidgets()) {
-            widgetIds.add(widget.getId());
+        if (source.getWidgets() != null) {
+            for (Widget widget : source.getWidgets()) {
+                widgetIds.add(widget.getId());
+            }
         }
         category.setWidgets(null);
         return category;

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
 Thu Oct 18 01:32:02 2012
@@ -54,6 +54,7 @@ public class MongoDbUserConverter implem
         for(GrantedAuthority authority : source.getAuthorities()) {
             authorityCodes.add(authority.getAuthority());
         }
+        user.setAuthorityCodes(authorityCodes);
         updateProperties(source, user);
         return user;
     }
@@ -76,12 +77,25 @@ public class MongoDbUserConverter implem
         converted.setProperties(source.getProperties());
         converted.setPassword(source.getPassword());
         converted.setConfirmPassword(source.getConfirmPassword());
-        converted.setDefaultPageLayoutCode(source.getDefaultPageLayoutCode());
+        converted.setDefaultPageLayoutCode(getPageLayoutCode(source));
         converted.setEnabled(source.isEnabled());
         converted.setExpired(source.isExpired());
         converted.setLocked(source.isLocked());
         converted.setOpenId(source.getOpenId());
         converted.setForgotPasswordHash(source.getForgotPasswordHash());
         converted.setForgotPasswordTime(source.getForgotPasswordTime());
+
+    }
+
+    private String getPageLayoutCode(User source) {
+        String code = null;
+        if (source.getDefaultPageLayout() == null) {
+            if(source.getDefaultPageLayoutCode() != null) {
+                code = source.getDefaultPageLayoutCode();
+            }
+        } else {
+            code = source.getDefaultPageLayout().getCode();
+        }
+        return code;
     }
 }

Added: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/PageLayoutImplConverter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/PageLayoutImplConverter.java?rev=1399504&view=auto
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/PageLayoutImplConverter.java
 (added)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/PageLayoutImplConverter.java
 Thu Oct 18 01:32:02 2012
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.rave.portal.model.conversion.impl;
+
+import org.apache.rave.portal.model.PageLayout;
+import org.apache.rave.portal.model.conversion.HydratingModelConverter;
+import org.apache.rave.portal.model.impl.PageLayoutImpl;
+import org.springframework.stereotype.Component;
+
+@Component
+public class PageLayoutImplConverter implements 
HydratingModelConverter<PageLayout, PageLayoutImpl> {
+    @Override
+    public void hydrate(PageLayoutImpl dehydrated) {
+        //NOOP
+    }
+
+    @Override
+    public Class<PageLayout> getSourceType() {
+        return PageLayout.class;
+    }
+
+    @Override
+    public PageLayoutImpl convert(PageLayout source) {
+        PageLayoutImpl converted = source instanceof PageLayoutImpl ? 
((PageLayoutImpl)source) : new PageLayoutImpl();
+        converted.setCode(source.getCode());
+        converted.setNumberOfRegions(source.getNumberOfRegions());
+        converted.setRenderSequence(source.getRenderSequence());
+        converted.setUserSelectable(source.isUserSelectable());
+        return converted;
+    }
+}

Copied: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/PageTemplateImplConverter.java
 (from r1399029, 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongDbPageTemplateConverter.java)
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/PageTemplateImplConverter.java?p2=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/PageTemplateImplConverter.java&p1=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongDbPageTemplateConverter.java&r1=1399029&r2=1399504&rev=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongDbPageTemplateConverter.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/PageTemplateImplConverter.java
 Thu Oct 18 01:32:02 2012
@@ -31,7 +31,7 @@ import org.springframework.beans.factory
 import org.springframework.stereotype.Component;
 
 @Component
-public class MongDbPageTemplateConverter implements 
HydratingModelConverter<PageTemplate, PageTemplateImpl> {
+public class PageTemplateImplConverter implements 
HydratingModelConverter<PageTemplate, PageTemplateImpl> {
     @Autowired
     private WidgetRepository widgetRepository;
 

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.java?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.java
 Thu Oct 18 01:32:02 2012
@@ -87,7 +87,7 @@ public class MongoDbCategoryRepository i
     }
 
     private Category hydrate(MongoDbCategory category) {
-        converter.hydrate(category, CLASS);
+        converter.hydrate(category, Category.class);
         return category;
     }
 

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageLayoutRepository.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageLayoutRepository.java?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageLayoutRepository.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageLayoutRepository.java
 Thu Oct 18 01:32:02 2012
@@ -21,6 +21,7 @@ package org.apache.rave.portal.repositor
 
 import org.apache.commons.lang.NotImplementedException;
 import org.apache.rave.portal.model.PageLayout;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
 import org.apache.rave.portal.model.impl.PageLayoutImpl;
 import org.apache.rave.portal.repository.PageLayoutRepository;
 import org.apache.rave.util.CollectionUtils;
@@ -41,6 +42,9 @@ public class MongoDbPageLayoutRepository
     @Autowired
     private MongoOperations template;
 
+    @Autowired
+    private HydratingConverterFactory converter;
+
     @Override
     public PageLayout getByPageLayoutCode(String codename) {
         return template.findOne(new Query(where("code").is(codename)), 
PageLayoutImpl.class, COLLECTION);
@@ -69,7 +73,7 @@ public class MongoDbPageLayoutRepository
 
     @Override
     public PageLayout save(PageLayout item) {
-        template.save(item, COLLECTION);
+        template.save(converter.convert(item, PageLayout.class), COLLECTION);
         return item;
     }
 

Modified: 
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=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/persistence-applicationContext.xml
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/persistence-applicationContext.xml
 Thu Oct 18 01:32:02 2012
@@ -31,125 +31,11 @@
         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}"/>
+    <mongo:mongo id="mongo" host="${mongo.host}" port="${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

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/portal.properties
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/portal.properties?rev=1399504&r1=1399503&r2=1399504&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/portal.properties
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/test/resources/portal.properties
 Thu Oct 18 01:32:02 2012
@@ -33,28 +33,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
-portal.dataSource.url=jdbc:h2:mem:portal;DB_CLOSE_DELAY=-1
-portal.dataSource.driver=org.h2.Driver
-portal.dataSource.username=sa
-portal.dataSource.password=local
-
-portal.jpaDialect=org.apache.rave.persistence.jpa.impl.H2OpenJpaDialect
-portal.jpaVendorAdapter.databasePlatform=org.apache.openjpa.jdbc.sql.H2Dictionary
-portal.jpaVendorAdapter.database=H2
-
-# General Rave portal database settings
-portal.jpaVendorAdapter.showSql=true
-portal.openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=WARN
-portal.openjpa.RuntimeUnenhancedClasses=unsupported
-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
+mongo.host=localhost
+mongo.port=27017
 
 provider.wookie.wookieServerUrl=http://localhost:8080/wookie
 provider.wookie.wookieApiKey=TEST


Reply via email to