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
