<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:zcml="http://namespaces.zope.org/zcml"
    i18n_domain="plone.app.caching">

    <include package="plone.caching" />
    <include package="plone.app.registry" />

    <!-- Caching operations
         ~~~~~~~~~~~~~~~~~~ -->

    <adapter   factory=".default.StrongCaching"         name="plone.app.caching.strongCaching" />
    <utility component=".default.StrongCaching"         name="plone.app.caching.strongCaching" />

    <adapter   factory=".default.ModerateCaching"       name="plone.app.caching.moderateCaching" />
    <utility component=".default.ModerateCaching"       name="plone.app.caching.moderateCaching" />

    <adapter   factory=".default.WeakCaching"           name="plone.app.caching.weakCaching" />
    <utility component=".default.WeakCaching"           name="plone.app.caching.weakCaching" />

    <adapter   factory=".default.NoCaching"             name="plone.app.caching.noCaching" />
    <utility component=".default.NoCaching"             name="plone.app.caching.noCaching" />

    <!-- Uncomment to show the "Generic caching" in the UI (also see profiles/default/registry.xml)
    <adapter   factory=".default.BaseCaching"           name="plone.app.caching.baseCaching" />
    <utility component=".default.BaseCaching"           name="plone.app.caching.baseCaching" />
    -->

    <!-- Special handling for content in Plone's ResourceRegistries, if installed -->
    <adapter
        zcml:condition="installed Products.ResourceRegistries"
        factory=".default.ResourceRegistriesCaching"
        name="plone.app.caching.strongCaching"
        />

    <!-- RAM cache storage: a transformation at the very end of the chain -->
    <adapter factory=".ramcache.Store"                  name="plone.app.caching.operations.ramcache" />

    <!-- ETag components -->
    <adapter factory=".etags.UserID"                    name="userid" />
    <adapter factory=".etags.Roles"                     name="roles" />
    <adapter factory=".etags.Language"                  name="language" />
    <adapter factory=".etags.UserLanguage"              name="userLanguage" />
    <adapter factory=".etags.GZip"                      name="gzip" />
    <adapter factory=".etags.LastModified"              name="lastModified" />
    <adapter factory=".etags.CatalogCounter"            name="catalogCounter" />
    <adapter factory=".etags.ObjectLocked"              name="locked" />
    <adapter factory=".etags.Skin"                      name="skin" />
    <adapter factory=".etags.ResourceRegistries"        name="resourceRegistries" />
    <adapter factory=".etags.AnonymousOrRandom"         name="anonymousOrRandom" />
    <adapter factory=".etags.CopyCookie"                name="copy" />

</configure>
