<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">
<!-- 
Copyright 2004 The Apache Software Foundation
Licensed  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.
-->
<!--

  ************************************************************

  NOTE:

  The following configuration file contains the spring bean
  configuration needed to run the pluto-portal in memory
  mode.  Optional services are available which allow
  persistence to an rdbms, xml files, etc. . . however,
  we strongly recomend that if you are looking at these
  advanced features that you consider an enterprise portal
  such as Apache Jetspeed.

  Service Functions Include:
   - Preference Persistence
   - User Attribute Persistence
   - Portlet Registry
   - Page Registry
  ************************************************************

  -->

<beans>

    <bean id="RequiredContainerServices"
          name="OptionalContainerServices"
          class="org.apache.pluto.driver.services.container.ContainerServicesImpl"
          singleton="true">
      <constructor-arg><ref bean="PortalContext"/></constructor-arg>
      <constructor-arg><ref bean="DriverConfiguration"/></constructor-arg>
    </bean>

    <bean id="PortalContext"
          class="org.apache.pluto.driver.services.container.PortalContextImpl">
        <constructor-arg><ref bean="DriverConfiguration"/></constructor-arg>
    </bean>



    <!-- ================================================ -->
    <!-- The single top element of the configuration tree -->
    <!-- ================================================ -->
    <bean id="DriverConfiguration"
          class="org.apache.pluto.driver.config.impl.DriverConfigurationImpl">

      <!-- ===== Portal Services ===== -->
      <constructor-arg><ref bean="PortalURLParser"/></constructor-arg>
      <constructor-arg><ref bean="PropertyConfigService"/></constructor-arg>
      <constructor-arg><ref bean="PortletRegistryConfig"/></constructor-arg>
      <constructor-arg><ref bean="RenderConfigService"/></constructor-arg>
      <constructor-arg><ref bean="SupportedModesService"/></constructor-arg>

      <!-- === Container Services === -->
      <constructor-arg><ref bean="PortalCallbackService"/></constructor-arg>

      <!--  Optional Container Services -->
      <!--
      <property name="portletPreferencesService"><ref bean="PortletPreferencesService"/></property>
      <property name="userAttributeService"><ref bean="UserAttributeService"/></property>
      -->
    </bean>

    <!-- ================================================ -->
    <!-- The single top element of the administration tree -->
    <!-- ================================================ -->
    <bean id="AdminConfiguration" class="org.apache.pluto.driver.config.impl.AdminConfigurationImpl">
    	<!-- Upload the war -->
      <property name="warUploadAdminService"><ref bean="WarUploadAdminService"/></property>
    	<!-- Modify web.xml and reassemble the war in its proper deployment location -->
      <property name="reassembleWarAdminService"><ref bean="ReassemblerWarAdminService"/></property>
      	<!-- Create the deployment descriptor and deploy it -->
      <property name="deployWarAdminService"><ref bean="DeployWarAdminService"/></property>
      	<!-- Register the war in pluto-portal-driver-config file by adding a portlet-app element -->
      <!--  property name="portletRegistryAdminService"><ref bean="PortletRegistryConfig"/></property -->
      	<!-- Add the war in pluto-portal-driver-config file to render-config section -->
      <!-- property name="renderConfigAdminService"><ref bean="RenderConfigService"/></property -->
    </bean>

	<bean id="WarUploadAdminService" class="org.apache.pluto.driver.services.portal.admin.impl.WarUploadAdminServiceImpl">
		<property name="fileUploader"><ref bean="FileUploader"/></property>
		<property name="maxUploadSize"><value>10</value></property>
		<property name="uploadDir"><value>${user.home}/.pluto</value></property>
	</bean>
	
	<bean id="ReassemblerWarAdminService" class="org.apache.pluto.driver.services.portal.admin.impl.ReassembleWarAdminServiceImpl">
		<property name="reassembler"><ref bean="WarReassembler"/></property>
		<property name="unzipBaseDir"><value>${user.home}/.pluto</value></property>
		<property name="destination"><value>${catalina.home}/PlutoDomain</value></property>		
	</bean>

	<bean id="DeployWarAdminService" class="org.apache.pluto.driver.services.portal.admin.impl.Tomcat5DeployWarAdminServiceImpl">
		<property name="deployer"><ref bean="FileSystemDeployer"/></property>
		<property name="undeployer"><ref bean="HttpTomcatDeployer"/></property>
		<property name="tomcatService"><value>Catalina</value></property>
		<property name="host"><value>localhost</value></property>
		<property name="port"><value>8080</value></property>
		<property name="protocol"><value>http</value></property>
	</bean>
	
	<bean id="FileUploader" class="org.apache.pluto.util.fileupload.http.PortletFileUploader">
	</bean>

	<bean id="WarReassembler" class="org.apache.pluto.util.assemble.file.WarFileReassembler">
	</bean>
	
	<bean id="FileSystemDeployer" class="org.apache.pluto.util.deploy.file.Tomcat5FileSystemDeployer">
	</bean>
	
	<bean id="HttpTomcatDeployer" class="org.apache.pluto.util.deploy.http.HttpTomcatDeployer">
	</bean>
    <!-- ================================================ -->
    <!-- Portal Services injected into the Configuration  -->
    <!-- ================================================ -->
    <bean id="PortalURLParser"
          class="org.apache.pluto.driver.url.impl.PortalURLParserImpl"
          factory-method="getParser"
          singleton="true">
    </bean>

    <bean id="PropertyConfigService"
          class="org.apache.pluto.driver.services.impl.resource.PropertyConfigServiceImpl"
          singleton="true">
    </bean>

    <bean id="PortletRegistryConfig"
          class="org.apache.pluto.driver.services.impl.resource.PortletRegistryServiceImpl"
          singleton="true">
    </bean>

    <bean id="RenderConfigService"
          class="org.apache.pluto.driver.services.impl.resource.RenderConfigServiceImpl"
          singleton="true">
    </bean>
    
    <bean id="SupportedModesService"
          class="org.apache.pluto.driver.services.impl.resource.SupportedModesServiceImpl"
          singleton="true">
          <constructor-arg><ref bean="PortletRegistryConfig"/></constructor-arg>
          <constructor-arg><ref bean="PropertyConfigService"/></constructor-arg>          
    </bean>

    <!-- ================================================ -->
    <!-- Container Services injected into  Configuration  -->
    <!-- ================================================ -->
    <bean id="PortalCallbackService"
          class="org.apache.pluto.driver.services.container.PortalCallbackServiceImpl"
          singleton="true">
    </bean>

</beans>