<?xml version="1.0"?>
<!--
  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.
-->
<!-- SVN $Id: portal.xconf 1418605 2012-12-08 05:37:04Z crossley $ -->
<xconf xpath="/cocoon" unless="component[@role='org.apache.cocoon.portal.event.aspect.EventAspectSelector']">

  <!-- Event Aspect configuration -->
  <component class="org.apache.cocoon.components.ExtendedComponentSelector" role="org.apache.cocoon.portal.event.aspect.EventAspectSelector">
    <aspect logger="portal" name="action-counter" class="org.apache.cocoon.portal.event.aspect.impl.ActionCounterEventAspect"/>
    <aspect logger="portal" name="request-parameter" class="org.apache.cocoon.portal.event.aspect.impl.RequestParameterEventAspect"/>
    <aspect logger="portal" name="frame" class="org.apache.cocoon.portal.event.aspect.impl.FrameEventAspect"/>
    <aspect logger="portal" name="link"  class="org.apache.cocoon.portal.event.aspect.impl.LinkEventAspect" />
    <aspect logger="portal" name="page-label" class="org.apache.cocoon.portal.event.aspect.impl.PageLabelEventAspect"/>
    <aspect logger="portal" name="convertable" class="org.apache.cocoon.portal.event.aspect.impl.ConvertableEventAspect"/>
    <aspect logger="portal" name="full-screen-coplet" class="org.apache.cocoon.portal.event.aspect.impl.FullScreenCopletEventAspect"/>

    <!-- This aspect sets headers on the response that tell the client to not cache the response: -->
    <aspect logger="portal" name="no-client-caching" class="org.apache.cocoon.portal.event.aspect.impl.NoClientCachingEventAspect"/>
  </component>

  <!-- Portal Manager Aspect Configuration -->
  <component class="org.apache.cocoon.components.ExtendedComponentSelector"
             role="org.apache.cocoon.portal.PortalManagerAspectSelector">
      <!--  You can add own aspects here. -->
  </component>



  <!-- Event Factory configuration -->
  <component class="org.apache.cocoon.components.ExtendedComponentSelector" role="org.apache.cocoon.portal.event.ConvertableEventFactorySelector">
    <!-- The events that can be marshalled. The name must match the Event's request parameter. -->
    <factory logger="portal" name="cocoon-portal-fs" class="org.apache.cocoon.portal.event.impl.FullScreenCopletEventFactory"/>
    <factory logger="portal" name="url" class="org.apache.cocoon.portal.pluto.PortletURLProviderFactory"/>
  </component>


  <!-- Coplet Adapter configuration -->
  <component class="org.apache.cocoon.components.ExtendedComponentSelector" 
             role="org.apache.cocoon.portal.coplet.adapter.CopletAdapterSelector">
    <!-- This is the pipeline/uri based adapter -->
    <coplet-adapter name="uri" 
                    class="org.apache.cocoon.portal.coplet.adapter.impl.URICopletAdapter" 
                    logger="portal"/>
    <!-- This is the JSR-168 adapter -->
    <coplet-adapter name="portlet"
                    class="org.apache.cocoon.portal.coplet.adapter.impl.PortletAdapter" 
                    logger="portal"/>
    <!-- This is an extension of the uri adapter -->
    <coplet-adapter name="caching-uri" 
                    class="org.apache.cocoon.portal.coplet.adapter.impl.CachingURICopletAdapter"
                    logger="portal"/>
    <!-- This is the application adapter -->
    <coplet-adapter name="application"
                    class="org.apache.cocoon.portal.coplet.adapter.impl.ApplicationCopletAdapter"
                    logger="portal"/>
 </component>


 <!-- Renderer Aspect configuration -->
 <component class="org.apache.cocoon.components.ExtendedComponentSelector" role="org.apache.cocoon.portal.layout.renderer.aspect.RendererAspectSelector">
    <aspect logger="portal" name="composite-content" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.CompositeContentAspect"/>
    <aspect logger="portal" name="tab-content" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.TabContentAspect"/>
    <aspect logger="portal" name="window" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.WindowAspect"/>
    <aspect logger="portal" name="portlet-window"
            class="org.apache.cocoon.portal.layout.renderer.aspect.impl.PortletWindowAspect"/>

    <!-- This aspect can be used to render the minimize/maximize buttons -->
    <aspect logger="portal" name="coplet-sizing" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.SizingAspect"/>

    <!-- This aspect can be used to render the remove button -->
    <aspect logger="portal" name="coplet-removing" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.RemovableAspect"/>

    <!-- This aspect can be used to render a full-screen button -->
    <aspect logger="portal" name="coplet-full-screen" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.FullScreenCopletAspect"/>

    <!-- This aspect can be used to render cinclude statements that will be used to include the coplet content,
         use the coplet aspect below to directly stream the content -->
    <aspect logger="portal" name="coplet-cinclude" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.CIncludeCopletAspect"/>

    <!-- This aspect creates a history of all layout aspect datas,
         coplet aspect datas and coplet attributes. It can be used by
         the bookmark action to browse the history -->
    <aspect logger="portal" name="history" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.HistoryAspect"/>
    
    <!-- This aspect can be used to render the content of the coplet -->
    <aspect logger="portal" name="coplet" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.DefaultCopletAspect"/>
    <aspect logger="portal" name="frame" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.FrameAspect"/>
    <aspect logger="portal" name="xslt" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.XSLTAspect"/>
    <aspect logger="portal" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.ParameterAspect" name="parameter"/>
    <!-- This is the special basket renderer -->
    <aspect logger="portal" class="org.apache.cocoon.portal.coplets.basket.AddToBasketAspect" name="basket"/>
 </component>

 <!-- Aspect Storage configuration -->
 <component class="org.apache.cocoon.components.ExtendedComponentSelector" 
            role="org.apache.cocoon.portal.aspect.AspectDataStoreSelector">
    <store logger="portal" name="temporary" class="org.apache.cocoon.portal.aspect.impl.TemporaryAspectDataStore"/>
    <store logger="portal" name="request" class="org.apache.cocoon.portal.aspect.impl.RequestAspectDataStore"/>
    <store logger="portal" name="session" class="org.apache.cocoon.portal.aspect.impl.SessionAspectDataStore"/>
    <store logger="portal" name="persistent" class="org.apache.cocoon.portal.aspect.impl.PersistentAspectDataStore"/>
    <store logger="portal" name="memory" class="org.apache.cocoon.portal.aspect.impl.MemoryAspectDataStore"/>
 </component>

 <component class="org.apache.cocoon.portal.profile.impl.MapProfileLS" role="org.apache.cocoon.portal.profile.ProfileLS" logger="portal"/>

 <component class="org.apache.cocoon.components.variables.DefaultVariableResolverFactory" role="org.apache.cocoon.components.variables.VariableResolverFactory" logger="portal"/>

 <!-- This is the basket manager -->
 <component class="org.apache.cocoon.portal.coplets.basket.BasketManagerImpl" 
            role="org.apache.cocoon.portal.coplets.basket.BasketManager"
            logger="portal">
     <!-- This is only a sample configuration, it doesn't really work -->
     <parameter name="basket:action:print" value="cocoon://print-basket"/>
     <parameter name="basket:action:email" value="cocoon://email-basket"/>
     <parameter name="briefcase:action:print" value="cocoon://print-briefcase"/>
     <parameter name="briefcase:action:email" value="cocoon://email-briefcase"/>
     <parameter name="briefcase:action:calc" value="cocoon://calc-briefcase"/>
 </component>
 
  <component class="org.apache.cocoon.portal.event.impl.DefaultEventManager" logger="portal"
             role="org.apache.cocoon.portal.event.EventManager">
    <event-aspects>
      <!--  The client should not cache the page. -->
      <aspect type="no-client-caching"/>
      <!-- Uncomment this aspect when marshalling JSR168 portlet events
      <aspect type="convertable"/>
      -->
      <!-- Use the action counter with great care. We recommend turning it off. -->
      <!-- Remove action-counter when using PageLabels -->
      <!-- aspect type="action-counter"/ -->
      <aspect type="frame"/>
      <aspect type="link"/>
      <aspect type="full-screen-coplet"/>
      <!-- Uncomment the following when using PageLabels
      <aspect type="page-label"/>
      -->
      <!-- Uncomment the following if need WSRP: -->
      <!-- (and see COCOON-2069) -->
      <!--
      <aspect type="wsrp"/>
      -->
      <aspect type="request-parameter">
        <!-- Uncomment the following when marshalling JSR168 portlet events
        <parameter name="parameter-name" value="cocoon-portal-event,url"/>
        -->
      </aspect>
    </event-aspects>
    <!-- add a new instance of each class as a subscriber: -->
    <subscriber-classes>
      <!-- Please note that Subcribers are deprecated. Please use receivers instead. -->
      <!-- class name="CLASSNAME"/> -->
    </subscriber-classes>
    <!-- add each component as a subscriber (the component should be thread safe): -->
    <subscriber-roles>
      <!-- Please note that Subcribers are deprecated. Please use receivers instead. -->
      <!-- <role name="AVALON-ROLE"/> -->
    </subscriber-roles>
    <!-- add a new instance of each class as a receiver: -->
    <receiver-classes>
      <class name="org.apache.cocoon.portal.event.subscriber.impl.DefaulCopletDataEventSubscriber"/>
      <class
        name="org.apache.cocoon.portal.event.subscriber.impl.DefaultChangeAspectDataEventSubscriber"/>
      <class name="org.apache.cocoon.portal.event.subscriber.impl.DefaultJXPathEventSubscriber"/>
    </receiver-classes>
    <!-- add each component as a receiver (the component should be thread safe): -->
    <receiver-roles>
      <!-- <role name="AVALON-ROLE"/> -->
    </receiver-roles>
  </component>

  <!-- This is the portal manager.
       The portal manager can be extended with different aspects.
       Currently the JSR-168 aspect is configured/activated.
       If you don't need the JSR-168 support uncomment the aspect.
       In a similar manner the wsrp support works.
  -->
  <component class="org.apache.cocoon.portal.impl.PortalManagerImpl"
             logger="portal" role="org.apache.cocoon.portal.PortalManager">
    <aspects>
      <!-- JSR-168 support: -->
      <aspect adapter="portlet"/>
      <!-- wsrp support: -->
      <!-- Uncomment the following if need WSRP: -->
      <!-- (and see COCOON-2069) -->
      <!--
      <aspect adapter="wsrp"/>
      -->
    </aspects>
    <fullScreenNav>true</fullScreenNav>
  </component>


  <!-- This is the portal service -->
  <component class="org.apache.cocoon.portal.impl.PortalServiceImpl" logger="portal"
             role="org.apache.cocoon.portal.PortalService">
    <portals>
      <!-- Configure your portals here: -->
    </portals>
  </component>

  <!-- To enable PageLabels change DefaultLinkService to PageLabelLinkService -->
  <component class="org.apache.cocoon.portal.impl.DefaultLinkService"
             logger="portal"
             role="org.apache.cocoon.portal.LinkService">
    <parameter name="defaultPort" value="8888"/>
    <parameter name="defaultSecurePort" value="443"/>
  </component>

  <!-- To enable PageLabels change DefaultEventConverter to PageLabelEventConverter -->
  <component class="org.apache.cocoon.portal.event.impl.DefaultEventConverter" logger="portal"
             role="org.apache.cocoon.portal.event.EventConverter">
  </component>

  <!-- Page Label Manager -->
  <component class="org.apache.cocoon.portal.impl.PageLabelManager" logger="portal"
             role="org.apache.cocoon.portal.impl.PageLabelManager">
    <!-- Uncomment to marshall JSR-168 portlet events
    <marshallEvents>true</marshallEvents>
    -->
    <!-- Uncomment to enable non sticky tabs
    <nonStickyTabs>true</nonStickyTabs>
    -->
    <!-- Uncomment to have the label appear in the path instead of as a request parameter
    <urlPath>true</urlPath>
    -->
  </component>
 

</xconf>
