<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:five="http://namespaces.zope.org/five"
    xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
    xmlns:i18n="http://namespaces.zope.org/i18n" xmlns:plone="http://namespaces.plone.org/plone" xmlns:zcml="http://namespaces.zope.org/zcml" i18n_domain="dummy">

  <i18n:registerTranslations directory="locales" />

  <include
      package="plone.behavior"
      file="meta.zcml"
      />
  <include
      package="plone.rest"
      file="meta.zcml"
      />

  <include package="plone.behavior" />
  <include package="plone.rest" />
  <include package="plone.schema" />
  <include package="Products.CMFPlone" />

  <include
      package="plone.app.caching"
      zcml:condition="installed plone.app.caching"
      />

  <include file="indexers.zcml" />

  <five:registerPackage
      package="."
      initialize=".initialize"
      />

  <include file="permissions.zcml" />

  <genericsetup:registerProfile
      name="default"
      title="plone.restapi"
      description="RESTful hypermedia API for Plone."
      provides="Products.GenericSetup.interfaces.EXTENSION"
      directory="profiles/default"
      post_handler=".setuphandlers.post_install_default"
      />

  <genericsetup:registerProfile
      name="testing"
      title="plone.restapi testing"
      description="Adds sample content types for testing"
      provides="Products.GenericSetup.interfaces.EXTENSION"
      for="Products.CMFPlone.interfaces.ITestCasePloneSiteRoot"
      directory="profiles/testing"
      />

  <genericsetup:registerProfile
      name="testing-workflows"
      title="plone.restapi testing-workflows"
      description="Adds sample workflows for testing"
      provides="Products.GenericSetup.interfaces.EXTENSION"
      for="Products.CMFPlone.interfaces.ITestCasePloneSiteRoot"
      directory="profiles/testing-workflows"
      />

  <genericsetup:registerProfile
      name="performance"
      title="plone.restapi performance testing"
      description="Adds sample content for performance testing"
      provides="Products.GenericSetup.interfaces.EXTENSION"
      directory="profiles/performance"
      />

  <genericsetup:registerProfile
      name="blocks"
      title="Volto Blocks"
      description="Enables blocks on the Document content type"
      provides="Products.GenericSetup.interfaces.EXTENSION"
      directory="profiles/blocks"
      />

  <genericsetup:registerProfile
      name="uninstall"
      title="plone.restapi"
      description="RESTful hypermedia API for Plone - Uninstall"
      provides="Products.GenericSetup.interfaces.EXTENSION"
      directory="profiles/uninstall"
      />

  <include
      package="plone.rest"
      file="configure.zcml"
      />
  <include package=".services" />
  <include package=".serializer" />
  <include package=".deserializer" />
  <include package=".types" />
  <include package=".search" />
  <include package=".cache" />

  <include package=".upgrades" />

  <configure zcml:condition="installed plone.app.dexterity">

    <include
        package="plone.behavior"
        file="meta.zcml"
        />

    <plone:behavior
        name="volto.blocks"
        title="Blocks"
        description="Enables Volto Blocks support"
        provides=".behaviors.IBlocks"
        />

    <plone:behavior
        name="volto.blocks.editable.layout"
        title="Blocks (Editable Layout)"
        description="Enables Volto Blocks (editable layout) support"
        provides=".behaviors.IBlocksEditableLayout"
        />

  </configure>

  <utility
      factory=".setuphandlers.HiddenProfiles"
      provides="Products.CMFPlone.interfaces.INonInstallable"
      name="plone.restapi"
      />

  <subscriber
      factory=".blocks.NestedBlocksVisitor"
      provides="plone.restapi.interfaces.IBlockVisitor"
      />

  <!-- blocks link integrity -->
  <adapter factory=".blocks_linkintegrity.BlocksRetriever" />

  <subscriber
      factory=".blocks_linkintegrity.TextBlockLinksRetriever"
      provides="plone.restapi.interfaces.IBlockFieldLinkIntegrityRetriever"
      />
  <subscriber
      factory=".blocks_linkintegrity.GenericBlockLinksRetriever"
      provides="plone.restapi.interfaces.IBlockFieldLinkIntegrityRetriever"
      />
  <subscriber
      factory=".blocks_linkintegrity.SlateBlockLinksRetriever"
      provides="plone.restapi.interfaces.IBlockFieldLinkIntegrityRetriever"
      />

</configure>
