Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-config.xml
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-config.xml?rev=1379124&r1=1379123&r2=1379124&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-config.xml 
(original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-config.xml 
Thu Aug 30 20:34:15 2012
@@ -19,29 +19,302 @@
 <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:mvc="http://www.springframework.org/schema/mvc";
-       xsi:schemaLocation="http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc.xsd
-        http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
+       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";>
 
+  <!--
+  Scans the classpath of this application for @Components to deploy as beans
+  NOTE: only the controllers (api and controller packages) are scanned here in 
dispatcher-servlet.xml. All other
+  org.apache.rave.portal.web.<packages> are scanned in 
web-applicationContext.xml.  This is to prevent duplicate
+  bean scanning of o.a.r.p.web.* components which can cause problems.
+  -->
+  <context:component-scan 
base-package="org.apache.rave.portal.web.controller"/>
+  <context:component-scan base-package="org.apache.rave.portal.web.api"/>
   <context:component-scan base-package="org.apache.rave.portal.web.hmvc"/>
 
-  <!-- Resolves view names to protected .jsp resources within the 
/WEB-INF/jsp/hmvc directory -->
-  <bean 
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
-    <property name="prefix" value="/WEB-INF/jsp/hmvc/"/>
-    <property name="suffix" value=".jsp"/>
+  <!-- Configures the @Controller programming model -->
+
+  <!-- Inline replacement of Spring <mvc:annotation-driven/> to be able to 
override/extend its behavior.
+       This inline replacement has as downside that next versions of Spring 
might require alignment, but the
+       alternative is writing custom BeanPostProcessor(s) which are difficult 
to support customizations of our own (through XML).
+
+       Derived/reverse-enginered from 
org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport and
+       
org.springframework.web.servlet.config.DefaultServletHandlerBeanDefinitionParser
+  -->
+  <!-- register-defaults
+
+  <bean 
class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
+  <bean class="org.springframework.http.converter.StringHttpMessageConverter">
+    <property name="writeAcceptCharset" value="false"/>
+  </bean>
+  <bean 
class="org.springframework.http.converter.ResourceHttpMessageConverter" />
+  <bean 
class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
+  <bean 
class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" 
/>
+  -->
+
+  <!-- if class javax.xml.bind.Binder present
+    <bean 
class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"
 />
+  -->
+
+  <!-- if class com.fasterxml.jackson.databind.ObjectMapper present
+    <bean 
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"
 />
+  -->
+
+  <!-- else if class org.codehaus.jackson.map.ObjectMapper present
+    <bean 
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"
 />
+  -->
+
+  <!-- if class com.sun.syndication.feed.WireFeed present
+    <bean 
class="org.springframework.http.converter.feed.AtomFeedHttpMessageConverter" />
+    <bean 
class="org.springframework.http.converter.feed.RssChannelHttpMessageConverter" 
/>
+  -->
+
+  <!-- end register-defaults -->
+
+
+  <!-- FILE BASED LOADING-->
+  <!--
+    <bean name="hmvcHandlerMappingByConfig" 
class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodMappingByConfig">
+      <property name="order" value="-1"/>
+      <property name="interceptors" ref="interceptors"/>
+      <property name="configurationName" value="myConfiguration"/>
+      <property name="configurationPath" 
value="classpath:page-configuration.xml"/>
+      <property name="urlMappingsPath" 
value="classpath:url-configuration.xml"/>
+      <property name="configManager" ref="fileConfigurationManager"/>
+    </bean>
+  -->
+
+  <!--
+    
//*************************************************************************************
+    // REPOSITORY SETUP
+    
//*************************************************************************************
+  -->
+
+
+  <bean id="repository" 
class="org.apache.rave.jcr.utils.TransientBaseRepositoryFactoryBean">
+    <property name="homeDirectory" value="file:./target/repository"/>
+    <property name="repositoryFile" 
value="org/apache/rave/jcr/jackrabbit/repository.xml"/>
+
   </bean>
 
-  <!--<bean name="handlerMapping" 
class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodMapping" />-->
-  <bean name="handlerMapping" 
class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodMappingByConfig">
+  <bean id="jcrSessionFactory" 
class="org.apache.rave.jcr.utils.JcrSessionFactory">
+    <property name="repository" ref="repository"/>
+    <property name="credentials" ref="javax.jcr.SimpleCredentials"/>
+  </bean>
+  <bean id="password" class="java.lang.String">
+    <constructor-arg index="0" value="admin"/>
+  </bean>
+
+  <bean class="javax.jcr.SimpleCredentials">
+    <constructor-arg index="0" value="admin"/>
+    <constructor-arg index="1">
+      <bean factory-bean="password" factory-method="toCharArray"/>
+    </constructor-arg>
+  </bean>
+  <!--
+    //############################################
+    // INJECT FOR TESTING
+    //############################################
+  -->
+  <bean name="servletContext" 
class="org.springframework.mock.web.MockServletContext"/>
+
+
+  <bean name="lazyRepositoryFactory" 
class="org.apache.rave.jcr.LazyRepositoryFactory">
+    <constructor-arg>
+      <bean 
class="org.apache.rave.jcr.servlet.ServletContextRepositoryFactory">
+        <constructor-arg value="#{servletContext}"/>
+      </bean>
+    </constructor-arg>
+  </bean>
+
+  <!-- JCR LOGIN -->
+  <bean id="jcrCredentials" class="javax.jcr.SimpleCredentials">
+    <constructor-arg index="0" value="admin"/>
+    <constructor-arg index="1" value="admin"/>
+  </bean>
+
+  <!--JCR Bootstrap -->
+  <bean name="repositoryBootstrap" 
class="org.apache.rave.jcr.bootstrapping.RaveBootstrap" 
destroy-method="shutdown">
+    <constructor-arg index="0" value="#{servletContext}"/>
+    <constructor-arg index="1" ref="lazyRepositoryFactory"/>
+    <constructor-arg index="2" ref="jcrCredentials"/>
+    <constructor-arg index="3" value="default"/>
+    <constructor-arg index="4" value="true"/>
+  </bean>
+
+  <!-- FILE LOADING -->
+  <bean name="hmvcHandlerMappingByConfig" 
class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodMappingByConfig">
+    <property name="order" value="-1"/>
     <property name="configurationName" value="myConfiguration"/>
     <property name="configurationPath" 
value="classpath:page-configuration.xml"/>
     <property name="urlMappingsPath" value="classpath:url-configuration.xml"/>
     <property name="configManager" ref="fileConfigurationManager"/>
+
   </bean>
-  <bean name="handlerAdapter" 
class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodHandlerAdapter"/>
+
+  <!-- JCR LOADING -->
+  <!--
+    <bean name="hmvcHandlerMappingByConfig" 
class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodMappingByConfig" 
depends-on="repositoryBootstrap" destroy-method="shutdown">
+      <property name="order" value="-1"/>
+      <property name="configurationName" value="myConfiguration"/>
+      <property name="configurationPath" value="/raveconfig"/>
+      <property name="configManager" ref="fileConfigurationManager"/>
+      <property name="credentials" ref="jcrCredentials"/>
+      <property name="lazyRepositoryFactory" ref="lazyRepositoryFactory"/>
+    </bean>
+  -->
+
   <bean id="fileConfigurationManager" 
class="org.apache.rave.jcr.config.FileConfigManager"/>
 
+  <bean name="hmvcHandlerMapping" 
class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodMapping">
+    <property name="order" value="0"/>
+  </bean>
+
+  <!-- Default replaced by HmvcHandlerMethodMapping which has build-in 
fallback to the default RequestMappingHandlerMapping
+       The default cannot be enabled as it cannot be configured to *exclude* 
certain @RequestMapping methods, e.g. @hmvc ones
+  <bean id="requestMappingHandlerMapping" 
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
+    <property name="order" value="0" />
+    <property name="interceptors" ref="interceptors"/>
+  </bean>
+  -->
+
+  <!-- Inline replacement of Spring <mvc:view-controller/> -->
+  <bean 
id="org.springframework.web.servlet.config.viewControllerHandlerMapping" 
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
+    <property name="order" value="1"/>
+    <property name="urlMap">
+      <map>
+        <!-- Forwards requests to the "/" resource to the "page" view -->
+        <entry key="/">
+          <bean 
class="org.springframework.web.servlet.mvc.ParameterizableViewController">
+            <property name="viewName" value="page"/>
+          </bean>
+        </entry>
+        <entry key="/binaries/**" value="binaryViewController"/>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="beanNameHandlerMapping" 
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
+    <property name="order" value="2"/>
+  </bean>
+
+  <bean name="hmvcHandlerAdapter" 
class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodHandlerAdapter">
+    <property name="order" value="-1"/>
+    <property name="webBindingInitializer">
+      <bean 
class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
+        <property name="conversionService">
+          <bean 
class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
+        </property>
+        <property name="validator">
+          <!-- depends on JSR-303
+          <bean 
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
+          -->
+          <null/>
+        </property>
+      </bean>
+    </property>
+  </bean>
+
+  <bean id="requestMappingHandlerAdapter" 
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
+    <property name="order" value="0"/>
+    <property name="webBindingInitializer">
+      <bean 
class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
+        <property name="conversionService">
+          <bean 
class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
+        </property>
+        <property name="validator">
+          <!-- depends on JSR-303
+          <bean 
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
+          -->
+          <null/>
+        </property>
+      </bean>
+    </property>
+  </bean>
+
+  <bean id="httpRequestHandlerAdapter" 
class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
+  <bean id="simpleControllerHandlerAdapter" 
class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
+
+  <bean id="handlerExceptionResolver" 
class="org.springframework.web.servlet.handler.HandlerExceptionResolverComposite">
+    <property name="order" value="0"/>
+    <property name="exceptionResolvers">
+      <list>
+        <bean 
class="org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver"/>
+        <bean 
class="org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver"/>
+      </list>
+    </property>
+  </bean>
+
+  <!-- Resolves view names to protected .jsp resources within the 
/WEB-INF/views directory -->
+  <bean 
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+    <property name="prefix" value="/WEB-INF/jsp/views/"/>
+    <property name="suffix" value=".jsp"/>
+  </bean>
+
+
+  <!-- Resolves view names to protected .jsp resources within the 
/WEB-INF/views directory -->
+  <bean 
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+    <property name="prefix" value="/WEB-INF/jsp/views/"/>
+    <property name="suffix" value=".jsp"/>
+  </bean>
+  <!--
+    //############################################
+    // FREEMARKER CONFIGURATION
+    //############################################
+  -->
+
+
+  <bean id="documentManager" 
class="org.apache.rave.jcr.data.mapping.DefaultDocumentManager">
+    <constructor-arg index="0" ref="repository"/>
+    <constructor-arg index="1" ref="javax.jcr.SimpleCredentials"/>
+  </bean>
+
+  <bean id="jcrResourceLoader" 
class="org.apache.rave.portal.web.hmvc.resource.JcrRepositoryResourceLoader">
+    <constructor-arg ref="documentManager"/>
+  </bean>
+
+  <bean id="freemarkerConfig" 
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
+    <property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
+    <property name="preTemplateLoaders">
+      <list>
+        <bean 
class="org.apache.rave.portal.web.hmvc.resource.FreeMarkerTemplateLoader">
+          <property name="loader" ref="jcrResourceLoader"/>
+        </bean>
+      </list>
+    </property>
+    <property name="freemarkerVariables">
+      <map>
+        <entry key="templateLoaderPath" value-ref="fmXmlEscape"/>
+        <entry key="xml_escape" value-ref="fmXmlEscape"/>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
+
+  <bean id="viewResolver" 
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
+    <property name="cache" value="true"/>
+    <property name="prefix" value=""/>
+    <property name="suffix" value=".ftl"/>
+  </bean>
+
+  <!--
+  
//*************************************************************************************
+  // BINARY CONTROLLER AND RESOLVERS
+  // see also: 
org.springframework.web.servlet.config.viewControllerHandlerMapping
+  
//*************************************************************************************
+  -->
+  <bean id="binaryViewController" 
class="org.apache.rave.portal.web.hmvc.resource.BinaryRepositoryController">
+    <property name="methodNameResolver" ref="binaryNameResolver"/>
+  </bean>
+
+  <bean id="binaryNameResolver" 
class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
+    <property name="mappings">
+      <props>
+        <prop key="/binaries/**">render</prop>
+      </props>
+    </property>
+  </bean>
 
 </beans>
 

Added: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-template.ftl
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-template.ftl?rev=1379124&view=auto
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-template.ftl
 (added)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-template.ftl
 Thu Aug 30 20:34:15 2012
@@ -0,0 +1 @@
+<h1>${text}</h1>
\ No newline at end of file

Propchange: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-template.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-template.ftl
------------------------------------------------------------------------------
    svn:keywords = Id


Reply via email to