[Zope-CVS] CVS: Products/Ape - component.xml:1.1
datatypes.py:1.1
Chris McDonough
chris.mcdonough@cox.net
02 Aug 2003 19:18:24 -0400
I just updated the container-class directive in zopeschema.xml, so
you'll likely need to apply the same change here. :-(
- C
On Sat, 2003-08-02 at 13:19, Shane Hathaway wrote:
> Update of /cvs-repository/Products/Ape
> In directory cvs.zope.org:/tmp/cvs-serv4227
>
> Added Files:
> component.xml datatypes.py
> Log Message:
> Added to the Zope 2 ZConfig schema. You can now set up Ape databases via zope.conf if you make a minor local change to zopeschema.xml.
>
> === Added File Products/Ape/component.xml ===
> <?xml version="1.0"?>
>
> <!-- Ape storage and database ZConfig section setup
>
> To use this, first add the following line near the top of
> Zope/Startup/zopeschema.xml:
>
> <import package="Products.Ape"/>
>
> Then add to zope.conf:
>
> <ape-db fs>
> <ape-storage>
> mapper-variation filesystem
> <ape-fs-connection fs>
> basepath $INSTANCE/var/myfs
> </ape-fs-connection>
> </ape-storage>
> mount-point /fs
> scan-interval 10
> </ape-db>
>
> -->
>
>
> <component prefix="Products.Ape.datatypes">
>
> <abstracttype name="apelib.Connection" />
>
> <sectiontype name="ape-storage" implements="ZODB.storage"
> datatype=".Storage">
> <key name="mapper-variation" required="yes">
> <description>
> The name of the mapper variation to load from apeconf.xml
> files. See Products/Ape/doc/apexml.txt.
> </description>
> </key>
> <multisection type="apelib.Connection" name="+" attribute="connections">
> <description>
> Defines a database connector for use with this storage.
> </description>
> </multisection>
> </sectiontype>
>
>
> <sectiontype name="ape-fs-connection" implements="apelib.Connection"
> datatype=".FSConnection">
> <key name="basepath" required="yes">
> <description>
> The base filesystem path for the storage.
> </description>
> </key>
> <key name="metadata-prefix" default=".">
> <description>
> The prefix to use for all metadata files.
> </description>
> </key>
> <key name="hidden-filenames" default="_">
> <description>
> A regular expression that determines which filenames should be
> hidden from the object system. The default is '_', meaning
> that filenames starting with an underscore do not appear in
> the object system. This filter is in addition to the metadata
> filename filtering.
> </description>
> </key>
> </sectiontype>
>
>
> <sectiontype name="ape-dbapi-connection" implements="apelib.Connection"
> datatype=".DBAPIConnection">
> <key name="module-name" required="yes">
> <description>
> The base filesystem path for the storage.
> </description>
> </key>
> <key name="prefix" default="zodb">
> <description>
> A prefix to use for all tables in the database.
> </description>
> </key>
> <multikey name="param" attribute="params">
> <description>
> Positional parameters for opening the database.
> </description>
> </multikey>
> <key name="+" attribute="kwparams">
> <description>
> Keyword parameters for opening the database.
> </description>
> </key>
> </sectiontype>
>
>
> <sectiontype name="ape-db" implements="ZODB.database"
> datatype=".Database">
> <key name="mapper-variation" required="no">
> <description>
> The name of the mapper variation to load from apeconf.xml
> files. See Products/Ape/doc/apexml.txt.
> </description>
> </key>
> <key name="scan-interval" datatype="integer" default="10">
> <description>
> Cache scan interval in seconds. Set to 0 to disable scanning.
> </description>
> </key>
>
> <!-- ZConfig refuses to let us extend the "zodb_db" section type,
> therefore we have to duplicate. Grumble. The following is copied
> from ZODB/component.xml and Zope/Startup/zopeschema.xml, with
> package names expanded. -->
>
> <section type="ZODB.storage" name="*" attribute="storage"/>
> <key name="cache-size" datatype="integer" default="5000"/>
> <key name="pool-size" datatype="integer" default="7"/>
> <key name="version-pool-size" datatype="integer" default="3"/>
> <key name="version-cache-size" datatype="integer" default="100"/>
>
> <multikey name="mount-point" required="yes" attribute="mount_points"
> datatype="Zope.Startup.datatypes.mount_point">
> <description>
> The mount point is the slash-separated path to which this database
> will be mounted within the Zope application server.
> </description>
> </multikey>
>
> <key name="connection-class"
> datatype="Zope.Startup.datatypes.importable_name">
> <description>
> Change the connection class a database uses on a per-database basis to
> support different connection policies. Use a Python dotted-path
> name to specify the connection class.
> </description>
> </key>
>
> <key name="class-factory" datatype="Zope.Startup.datatypes.importable_name"
> default="DBTab.ClassFactories.autoClassFactory">
> <description>
> Change the class factory function a database uses on a
> per-database basis to support different class factory policy.
> Use a Python dotted-path name to specify the class factory function.
> </description>
> </key>
>
> <key name="container-class"
> datatype="Zope.Startup.datatypes.importable_name">
> <description>
> Change the contiainer class a (mounted) database uses on a
> per-database basis to support a different container than a plain
> Folder. Use a Python dotted-path name to specify the container class.
> </description>
> </key>
>
> </sectiontype>
>
> </component>
>
>
>
> === Added File Products/Ape/datatypes.py ===
> ##############################################################################
> #
> # Copyright (c) 2003 Zope Corporation and Contributors.
> # All Rights Reserved.
> #
> # This software is subject to the provisions of the Zope Public License,
> # Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
> # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
> # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
> # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
> # FOR A PARTICULAR PURPOSE.
> #
> ##############################################################################
> """ZConfig data types
>
> $Id: datatypes.py,v 1.1 2003/08/02 17:18:56 shane Exp $
> """
>
> from ZODB.config import BaseConfig
> from Zope.Startup.datatypes import ZopeDatabase
> from apelib.zope2.mapper import createMapper
> from apelib.zodb3 import storage, db, resource
>
>
> class Storage(BaseConfig):
>
> def open(self):
> config = self.config
> conns = {}
> for c in config.connections:
> conns[c.name] = c.open()
> mapper = createMapper(config.mapper_variation, search_products=1)
> r = resource.StaticResource(mapper)
> return storage.ApeStorage(r, conns, name=self.name)
>
>
> class Database(ZopeDatabase):
>
> def createDB(self):
> config = self.config
> if config.mapper_variation:
> mapper = createMapper(config.mapper_variation, search_products=1)
> r = resource.StaticResource(mapper)
> else:
> r = None
> s = config.storage.open()
> kw = {}
> for name in ('scan_interval', 'pool_size', 'cache_size',
> 'version_pool_size', 'version_cache_size'):
> if hasattr(config, name):
> kw[name] = getattr(config, name)
> d = db.ApeDB(s, r, **kw)
> return d
>
>
> def getParams(config):
> kw = {}
> for name in config.__dict__.keys():
> if not name.startswith('_'):
> kw[name] = getattr(config, name)
> return kw
>
>
> class FSConnection(BaseConfig):
>
> def open(self):
> from apelib.fs.connection import FSConnection as impl
> return impl(**getParams(self.config))
>
>
> class DBAPIConnection:
>
> def open(self):
> from apelib.sql.dbapi import DBAPIConnector as impl
> config = self.config
> return impl(module_name=config.module_name,
> prefix=config.prefix,
> params=config.params,
> kwparams=config.kwparams)
>
>
>
> _______________________________________________
> Zope-CVS maillist - Zope-CVS@zope.org
> http://mail.zope.org/mailman/listinfo/zope-cvs
>
> Zope CVS instructions: http://dev.zope.org/CVS
--
Chris McDonough <chris.mcdonough@cox.net>