<?xml version="1.0" encoding="ISO-8859-1"?>
<!--

    Copyright (C) 2009 eXo Platform SAS.

    This is free software; you can redistribute it and/or modify it
    under the terms of the GNU Lesser General Public License as
    published by the Free Software Foundation; either version 2.1 of
    the License, or (at your option) any later version.

    This software is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this software; if not, write to the Free
    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
    02110-1301 USA, or see the FSF site: http://www.fsf.org.

-->
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.exoplatform.org/xml/ns/kernel_1_2.xsd http://www.exoplatform.org/xml/ns/kernel_1_2.xsd"
   xmlns="http://www.exoplatform.org/xml/ns/kernel_1_2.xsd">

   <!-- will use JBoss logger, or enable eXo logger and run JBoss with -Dorg.jboss.logging.Log4jService.catchSystemOut=false -->
   <!-- component>
      <key>org.exoplatform.services.log.LogConfigurationInitializer</key>
      <type>org.exoplatform.services.log.LogConfigurationInitializer</type>
      <init-params>
         <value-param>
            <name>logger</name>
            <value>org.slf4j.Logger</value>
         </value-param>
         <value-param>
            <name>configurator</name>
            <value>org.exoplatform.services.log.impl.Log4JConfigurator</value>
         </value-param>
         <properties-param>
            <name>properties</name>
            <description>Log4J properties</description>
            <property name="log4j.rootLogger" value="INFO, stdout, file" />
            <property name="log4j.appender.stdout" value="org.apache.log4j.ConsoleAppender" />
            <property name="log4j.appender.stdout.threshold" value="DEBUG" />
            <property name="log4j.appender.stdout.layout" value="org.apache.log4j.PatternLayout" />
            <property name="log4j.appender.stdout.layout.ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss} *%-5p* [%t] %c{1}: %m (%F, line %L) %n" />
            <property name="log4j.appender.file" value="org.apache.log4j.FileAppender" />
            <property name="log4j.appender.file.File" value="../logs/jcr.log" />
            <property name="log4j.appender.file.layout" value="org.apache.log4j.PatternLayout" />
            <property name="log4j.appender.file.layout.ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss} *%-5p* [%t] %c{1}: %m (%F, line %L) %n" />
         </properties-param>
      </init-params>
   </component -->

   <component>
      <key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
      <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
      <init-params>
         <value-param>
            <name>conf-path</name>
            <description>JCR configuration file</description>
            <value>jar:/conf/portal/exo-jcr-config.xml</value>
         </value-param>
         <value-param profiles="ispn">
            <name>conf-path</name>
            <description>JCR configuration file</description>
            <value>jar:/conf/portal/exo-jcr-ispn-config.xml</value>
         </value-param>
         <value-param profiles="jbc">
            <name>conf-path</name>
            <description>JCR configuration file</description>
            <value>jar:/conf/portal/exo-jcr-jbc-config.xml</value>
         </value-param>
      </init-params>
   </component>

   <component>
      <key>org.exoplatform.services.jcr.RepositoryService</key>
      <type>org.exoplatform.services.jcr.impl.RepositoryServiceImpl</type>
      <component-plugins>
         <component-plugin>
            <name>add.namespaces</name>
            <set-method>addPlugin</set-method>
            <type>org.exoplatform.services.jcr.impl.AddNamespacesPlugin</type>
            <init-params>
               <properties-param>
                  <name>namespaces</name>
                  <property name="dc" value="http://purl.org/dc/elements/1.1/" />
                  <property name="webdav" value="http://www.exoplatform.org/jcr/webdav" />
               </properties-param>
            </init-params>
         </component-plugin>
         <component-plugin>
            <name>add.nodeType</name>
            <set-method>addPlugin</set-method>
            <type>org.exoplatform.services.jcr.impl.AddNodeTypePlugin</type>
            <init-params>
               <values-param>
                  <name>autoCreatedInNewRepository</name>
                  <description>Node types configuration file</description>
                  <value>jar:/conf/ext-nodetypes-config.xml</value>
                  <value>jar:/conf/webdav-nodetypes.xml</value>
               </values-param>
            </init-params>
         </component-plugin>
      </component-plugins>
   </component>

   <component>
      <type>org.exoplatform.services.jcr.impl.ext.action.SessionActionCatalog</type>
      <component-plugins>
         <component-plugin>
            <name>addActions</name>
            <set-method>addPlugin</set-method>
            <type>org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin</type>
            <description>add actions plugin</description>
            <init-params>
               <object-param>
                  <name>actions</name>
                  <object type="org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin$ActionsConfig">
                     <field name="actions">
                        <collection type="java.util.ArrayList">
                           <value>
                              <object type="org.exoplatform.services.jcr.impl.ext.action.ActionConfiguration">
                                 <field name="eventTypes">
                                    <string>addProperty,changeProperty</string>
                                 </field>
                                 <!--<field  name="path"><string>/test</string></field>-->
                                 <!--<field  name="isDeep"><boolean>true</boolean></field>-->
                                 <field name="nodeTypes">
                                    <string>nt:resource</string>
                                 </field>
                                 <!-- field  name="workspace"><string>production</string></field -->
                                 <field name="actionClassName">
                                    <string>org.exoplatform.services.jcr.ext.metadata.AddMetadataAction</string>
                                 </field>
                              </object>
                           </value>
                        </collection>
                     </field>
                  </object>
               </object-param>
            </init-params>
         </component-plugin>
      </component-plugins>
   </component>

   <component>
      <type>org.exoplatform.services.jcr.ext.registry.RegistryService</type>
      <init-params>
         <properties-param>
            <name>locations</name>
            <property name="repository" value="production" />
         </properties-param>
      </init-params>
   </component>

   <component>
      <type>org.exoplatform.services.jcr.ext.registry.RESTRegistryService</type>
   </component>

   <component>
      <type>org.exoplatform.services.jcr.ext.script.groovy.GroovyScript2RestLoader</type>
      <init-params>
         <object-param>
            <name>observation.config</name>
            <object type="org.exoplatform.services.jcr.ext.script.groovy.ObservationListenerConfiguration">
               <field name="repository">
                  <string>repository</string>
               </field>
               <field name="workspaces">
                  <collection type="java.util.ArrayList">
                     <value>
                        <string>production</string>
                     </value>
                  </collection>
               </field>
            </object>
         </object-param>
      </init-params>
   </component>
  <component profiles="jbc">
     <key>org.jboss.cache.transaction.TransactionManagerLookup</key>
     <type>org.jboss.cache.transaction.JBossStandaloneJTAManagerLookup</type>
  </component>
   
  <component profiles="jbc">
    <key>org.exoplatform.services.transaction.TransactionService</key>
    <type>org.exoplatform.services.transaction.jbosscache.JBossTransactionsService</type>
    <init-params>
      <value-param>
        <name>timeout</name>
        <value>3000</value>
      </value-param>
    </init-params>   
  </component>
  <component profiles="ispn">
     <key>org.infinispan.transaction.lookup.TransactionManagerLookup</key>
     <type>org.exoplatform.services.transaction.infinispan.JBossStandaloneJTAManagerLookup</type>
  </component>
   
  <component profiles="ispn">
    <key>org.exoplatform.services.transaction.TransactionService</key>
    <type>org.exoplatform.services.transaction.infinispan.JBossTransactionsService</type>
    <init-params>
      <value-param>
        <name>timeout</name>
        <value>3000</value>
      </value-param>
    </init-params>   
  </component>

  <component profiles="jbc">
    <key>org.exoplatform.services.rpc.RPCService</key>
    <type>org.exoplatform.services.rpc.impl.RPCServiceImpl</type>
    <init-params>
      <value-param>
        <name>jgroups-configuration</name>
        <value>jar:/conf/portal/cluster/udp-mux.xml</value>
      </value-param>
      <value-param>
        <name>jgroups-cluster-name</name>
        <value>RPCService-Cluster</value>
      </value-param>
      <value-param>
        <name>jgroups-default-timeout</name>
        <value>0</value>
      </value-param>
    </init-params>
  </component>  

  <component profiles="ispn">
    <key>org.exoplatform.services.rpc.RPCService</key>
    <type>org.exoplatform.services.rpc.jgv3.RPCServiceImpl</type>
    <init-params>
      <value-param>
        <name>jgroups-configuration</name>
        <value>jar:/conf/udp-mux-v3.xml</value>
      </value-param>
      <value-param>
        <name>jgroups-cluster-name</name>
        <value>RPCService-Cluster</value>
      </value-param>
      <value-param>
        <name>jgroups-default-timeout</name>
        <value>0</value>
      </value-param>
    </init-params>
  </component>  

   <component>
      <type>org.exoplatform.services.rest.impl.method.MethodInvokerFilterComponentPlugin</type>
      <init-params>
         <value-param>
            <name>method.access.filter</name>
            <value>org.exoplatform.services.rest.ext.method.filter.MethodAccessFilter</value>
         </value-param>
      </init-params> 
   </component>

   <!-- network services -->
   <component>
      <key>org.exoplatform.services.jcr.webdav.lnkproducer.LnkProducer</key>
      <type>org.exoplatform.services.jcr.webdav.lnkproducer.LnkProducer</type>
   </component>

   <component>
      <key>org.exoplatform.services.jcr.webdav.WebDavServiceImpl</key>
      <type>org.exoplatform.services.jcr.webdav.WebDavServiceImpl</type>
      <init-params>

         <value-param>
            <name>auto-mix-lockable</name>
            <value>false</value>
         </value-param>

         <value-param>
            <name>def-folder-node-type</name>
            <value>nt:folder</value>
         </value-param>

         <value-param>
            <name>def-file-node-type</name>
            <value>nt:file</value>
         </value-param>

         <value-param>
            <name>def-file-mimetype</name>
            <value>text/plain</value>
         </value-param>

         <value-param>
            <name>update-policy</name>
            <value>create-version</value>
         </value-param>
      </init-params>
   </component>

   <component>
      <key>org.exoplatform.services.ftp.FtpServiceImpl</key>
      <type>org.exoplatform.services.ftp.FtpServiceImpl</type>
      <init-params>
         <value-param>
            <name>command-port</name>
            <value>2121</value>
         </value-param>
         <value-param>
            <name>data-min-port</name>
            <value>52000</value>
         </value-param>
         <value-param>
            <name>data-max-port</name>
            <value>53000</value>
         </value-param>
         <value-param>
            <name>system</name>
            <!-- value>Windows_NT</value -->
            <value>UNIX Type: L8</value>
         </value-param>
         <value-param>
            <name>client-side-encoding</name>
            <value>UTF-8</value>
         </value-param>
         <value-param>
            <name>def-folder-node-type</name>
            <value>nt:folder</value>
         </value-param>
         <value-param>
            <name>def-file-node-type</name>
            <value>nt:file</value>
         </value-param>
         <value-param>
            <name>def-file-mime-type</name>
            <value>application/octet-stream</value>
         </value-param>
         <value-param>
            <name>cache-folder-name</name>
            <value>${exo.jcr.parent.dir:..}/temp/ftp_cache</value>
         </value-param>

         <!-- bytes per second -->
         <!-- value-param>
            <name>upload-speed-limit</name>       
            <value>20480</value>
         </value-param -->

         <!-- bytes per second -->
         <!-- value-param>
            <name>download-speed-limit</name>       
            <value>20480</value>        
         </value-param -->

         <!-- seconds -->
         <!-- value-param>
            <name>timeout</name>
            <value>60</value>
         </value-param -->
      </init-params>
   </component>
   <component>
     <type>org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent</type>
   </component>

   <component>
     <type>org.exoplatform.services.jcr.ext.repository.RestRepositoryService</type>
   </component>

   <component>
     <key>org.exoplatform.services.jcr.ext.backup.BackupManager</key>
     <type>org.exoplatform.services.jcr.ext.backup.impl.BackupManagerImpl</type>
     <init-params>
       <properties-param>
         <name>backup-properties</name>
         <property name="backup-dir" value="${exo.jcr.parent.dir:..}/temp/backup" />
       </properties-param>
     </init-params>
   </component>
   <component>
     <type>org.exoplatform.services.organization.impl.mock.DummyOrganizationService</type>
   </component>

   <component>
      <key>org.exoplatform.services.security.Authenticator</key>
      <type>org.exoplatform.services.organization.auth.OrganizationAuthenticatorImpl</type>
   </component>

   <component> 
      <type>org.exoplatform.services.jcr.ext.resource.jcr.Handler</type> 
   </component>

   <external-component-plugins>
      <target-component>org.exoplatform.services.naming.InitialContextInitializer</target-component>
      <component-plugin>
         <name>bind.datasource</name>
         <set-method>addPlugin</set-method>
         <type>org.exoplatform.services.naming.BindReferencePlugin</type>
         <init-params>
            <value-param>
               <name>bind-name</name>
               <value>jdbcjcr</value>
            </value-param>
            <value-param>
               <name>class-name</name>
               <value>javax.sql.DataSource</value>
            </value-param>
            <value-param>
               <name>factory</name>
               <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
            </value-param>
            <properties-param>
               <name>ref-addresses</name>
               <description>ref-addresses</description>
               <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
               <property name="url" value="jdbc:hsqldb:file:${exo.jcr.parent.dir:..}/temp/data/exodb" />
               <property name="username" value="sa" />
               <property name="password" value="" />
            </properties-param>
         </init-params>
      </component-plugin>
      <component-plugin>
         <name>bind.jcr</name>
         <set-method>addPlugin</set-method>
         <type>org.exoplatform.services.naming.BindReferencePlugin</type>
         <init-params>
            <value-param>
               <name>bind-name</name>
               <value>repository</value>
            </value-param>
            <value-param>
               <name>class-name</name>
               <value>javax.jcr.Repository</value>
            </value-param>
            <value-param>
               <name>factory</name>
               <value>org.exoplatform.services.jcr.impl.jndi.BindableRepositoryFactory</value>
            </value-param>
            <properties-param>
               <name>ref-addresses</name>
               <description>ref-addresses</description>
               <property name="repositoryName" value="repository" />
            </properties-param>
         </init-params>
      </component-plugin>
      <component-plugin>
         <name>rmi.jcr</name>
         <set-method>addPlugin</set-method>
         <type>org.exoplatform.services.naming.BindReferencePlugin</type>
         <init-params>
            <value-param>
               <name>bind-name</name>
               <value>rmirepository</value>
            </value-param>
            <value-param>
               <name>class-name</name>
               <value>javax.jcr.Repository</value>
            </value-param>
            <value-param>
               <name>factory</name>
               <value>org.exoplatform.services.jcr.rmi.api.client.ClientRepositoryFactory</value>
            </value-param>
            <properties-param>
               <name>ref-addresses</name>
               <description>ref-addresses</description>
               <property name="url" value="//localhost:9999/repository" />
            </properties-param>
         </init-params>
      </component-plugin>
   </external-component-plugins>

</configuration>
