NAME

SPOPS::Manual - User Guide and Reference Manual for SPOPS

DESCRIPTION

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.

MODULE LISTING

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

SEE ALSO

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

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".

AUTHORS

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.