SPOPS::Manual - User Guide and Reference Manual for SPOPS
This is the manual for SPOPS, Simple Perl Object Persistence with Security.
SPOPS is an object persistence framework that allows you to serialize your
objects in Perl to different datastores. It also allows you to protect
individual objects with a flexible security scheme and flexibly register pre-
and post- serialization handlers.
And all this can be done without writing any code -- common
serialization usage can be implemented with a configuration file that's
processed by SPOPS to create a fully functional class at run-time.
This manual provides an overview of the framework along with
examples, directions, etc. If you need implementation-specific information,
please see the documentation for the appropriate module. (All modules are
listed below.)
The manual is broken down into:
- SPOPS::Manual::Intro
- Introduction to SPOPS and a discussion of how all the pieces fit
together.
- SPOPS::Manual::Object
- Shows how you interact with SPOPS objects.
- SPOPS::Manual::Configuration
- Describes how the configuration process works and what common
configuration values are for the different implementations (e.g.,
SPOPS::DBI, SPOPS::LDAP, SPOPS::GDBM). Also contains information about
security-specific configuration items.
- SPOPS::Manual::Relationships
- Shows how to declaratively define different types of relationships between
SPOPS objects.
- SPOPS::Manual::ObjectRules
- Lists the general behaviors that every SPOPS object has, and shows how you
can use other pre- and post- serialization handlers as well as create your
own.
- SPOPS::Manual::CodeGeneration
- Shows how the SPOPS classes are created from configuration and how you can
modify the process for your own (hopefully benevolent) ends.
- SPOPS::Manual::Serialization
- Describes how objects are saved, fetched and removed. Illustrates how
SPOPS generates keys (if you ask nicely) and caches objects. Also
describes how to create your own serialization class.
- SPOPS::Manual::Datasource
- Information about how SPOPS uses datasources and how you can make one or
more datasources available to a number of objects at once.
- SPOPS::Manual::Security
- Details about the SPOPS security system.
- SPOPS::Manual::Exceptions
- Error handling in the SPOPS framework.
- SPOPS::Manual::ImportExport
- Getting data in and out of datasources using SPOPS.
- SPOPS::Manual::Cookbook
- Recipes for SPOPS usage.
General object behavior
- SPOPS
Initializing objects
This is the most common gateway to SPOPS, so be sure to see how to
use the "process()" method.
- SPOPS::Initialize
Error handling
- SPOPS::Exception
- SPOPS::Exception::DBI
- SPOPS::Exception::LDAP
- SPOPS::Exception::Security
Security
- SPOPS::Secure
- SPOPS::Secure::DBI
- SPOPS::Secure::Hierarchy
DBI items
- SPOPS::DBI
- SPOPS::SQLInterface
- SPOPS::ClassFactory::DBI
- SPOPS::DBI::TypeInfo
- SPOPS::DBI::InterBase
- SPOPS::DBI::MySQL
- SPOPS::DBI::Oracle
- SPOPS::DBI::Pg
- SPOPS::DBI::SQLite
- SPOPS::DBI::Sybase
- SPOPS::Key::DBI::HandleField
- SPOPS::Key::DBI::Identity
- SPOPS::Key::DBI::Pool
- SPOPS::Key::DBI::Sequence
- SPOPS::Tool::DBI::Datasource
- SPOPS::Tool::DBI::DiscoverField
- SPOPS::Tool::DBI::FindDefaults
- SPOPS::Tool::DBI::MaintainLinkedList
- SPOPS::Iterator::DBI
LDAP items
- SPOPS::LDAP
- SPOPS::LDAP::MultiDatasource
- SPOPS::ClassFactory::LDAP
- SPOPS::Tool::LDAP::Datasource
- SPOPS::Iterator::LDAP
Iterators (general)
- SPOPS::Iterator
- SPOPS::Iterator::DBI
- SPOPS::Iterator::LDAP
- SPOPS::Iterator::WrapList
Exporting/Importing
- SPOPS::Export
- SPOPS::Export::Object
- SPOPS::Export::Perl
- SPOPS::Export::SQL
- SPOPS::Export::XML
- SPOPS::Export::DBI::Data
- SPOPS::Import
- SPOPS::Import::Object
- SPOPS::Import::DBI::Table
- SPOPS::Import::DBI::Data
- SPOPS::Import::DBI::TableTransform
- SPOPS::Import::DBI::TableTransform::InterBase
- SPOPS::Import::DBI::TableTransform::MySQL
- SPOPS::Import::DBI::TableTransform::Oracle
- SPOPS::Import::DBI::TableTransform::Pg
- SPOPS::Import::DBI::TableTransform::SQLite
- SPOPS::Import::DBI::TableTransform::Sybase
Utilities that might be useful:
- SPOPS::Key::Random
- SPOPS::Key::UUID
- SPOPS::Tool::CreateOnly
- SPOPS::Tool::ReadOnly
- SPOPS::Utility
More information about how data are stored in an object
- SPOPS::Tie
- SPOPS::Tie::StrictField
Class Factory
This handles the code generation for objects at initialization.
It's useful for hacking SPOPS.
- SPOPS::ClassFactory
- SPOPS::ClassFactory::DefaultBehavior
- SPOPS::ClassFactory::DBI
- SPOPS::ClassFactory::LDAP
Find out more about SPOPS -- current versions, updates, rants, ideas -- at:
http://spops.sourceforge.net/
CVS access and mailing lists (SPOPS is currently supported by the
openinteract-dev list) are at:
http://sourceforge.net/projects/spops/
Also see the 'Changes' file in the source distribution for
comments about how the module has evolved.
Copyright (c) 2001-2004 Chris Winters. All rights reserved.
Permission is granted to copy, distribute and::or modify this
document under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.
A copy of the license is included in the file titled
"COPYING-DOCS".
Chris Winters <chris@cwinters.com>
The following people have offered patches, advice, development
funds, etc. to SPOPS:
- intes.net (http://www.intes.net/) has funded and supported SPOPS
development from its inception.
- Ray Zimmerman <rz10@cornell.edu> -- had offered tons of great design
ideas and general help, pushing SPOPS into new domains. Too much to list
here.
- Simon Ilyushchenko <simonf@cshl.edu> -- real-world usage advice,
work on improving the object linking semantics, lots of little items.
- Christian Lemburg <lemburg@aixonix.de> -- contributed excellent
documentation, too many good ideas to implement as well as design help
with SPOPS::Secure::Hierarchy and the impetus for moving methods from the
main SPOPS subclass to SPOPS::Utility.
- MSN Marketing Service Nordwest, GmbH -- funded development of LDAP
functionality, including SPOPS::LDAP, SPOPS::LDAP::MultiDatasource, and
SPOPS::Iterator::LDAP, and SPOPS::Iterator::LDAP.
- Rusty Foster <rusty@kuro5hin.org> -- was influential in the early
(!) days of this library and offered up an implementation for 'limit'
functionality in SPOPS::DBI
- Rick Myers <rik@sumthin.nu> -- got rid of lots of warnings when
running under "-w" and helped out with
permission issues with SPOPS::GDBM.
- Harry Danilevsky <hdanilevsky@DeerfieldCapital.com> -- helped out
with Sybase-specific issues, including inspiring
SPOPS::Key::DBI::Identity.
- Leon Brocard <acme@astray.com> -- prodded better docs of
"SPOPS::Configure" (now deprecated, but
folded into SPOPS::ClassFactory), specifically the linking semantics.
- Gert Thiel <thiel@baerkatalog.de> -- prodded better docs for
multifield primary keys in SPOPS::DBI and for defining and using
relationships.
- David Boone <dave@bis.bc.ca> -- prodded the creation of
SPOPS::Initialize.