[ANN] Copland 0.7.0

J

Jamis Buck

Copland is an Inversion of Control/Dependency Injection container for
Ruby, based on the architecture of the HiveMind IoC container for Java.

manual: http://copland.rubyforge.org
api: http://copland.rubyforge.org/api
project: http://rubyforge.org/projects/copland

Version 0.7.0 is a significant release for Copland, increasing
robustness, adding several new features, and fixing various bugs. I
won't quite say it's out of "alpha" into "beta", but it's certainly
getting close. The highlights of this release are:

* Installations using setup.rb were broken since they were not
installing the package descriptors. (Was anyone running into this? I
discovered it the hard way...hope it didn't cause anyone too much grief...)

* Refactored various non-core services into separate distributables. The
"copland-lib" package contains non-core services of a more general
nature, the "copland-remote" package is for dealing with remote services
and RPC frameworks (SOAP, XML-RPC, and dRuby), and "copland-webrick" is
for WEBrick-specific services. Each of these new packages are described
at the end of this summary.

* Interceptors no longer mangle the method names of the services they
encapsulate.

* The copland.AutoLoader is now copland.Startup, with a few other minor
changes (interface-wise).

* Added 'require' clause to package descriptor. This allows packages to
depend on other non-core packages in the Ruby search path. (This helped
make the refactoring of the non-core services possible.)

* Schemas may apply to array elements. In 0.6.0, schemas could only
apply to the elements of hashes.

* Schemas may now extend other schemas. If you've named an existing
schema, you can create other schemas that build on it. You don't have to
duplicate an entire schema just to add one or two new fields.

* Listeners are implemented differently (and more robustly) now. This
broke the lifecycle listener capability, but I'm debating the usefulness
of the lifecycle listeners anyway... Listeners are now more
general-purpose, and listener callbacks bypass any interceptors on the
service.

* Ruby 1.9 compatibility patch from Michael Neumann. Thanks, Michael!

* LogFactory is available as a service. This means that services can
easily get a reference to the active log factory instance and get new
logger instances. (Mostly useful for service factories.)

* Copland::get_class and friends work better with ambiguous module
names. Had some problems where the wrong module was being picked up.

* Contributions to a package-local configuration point no longer require
a fully qualified name.

In addition, the rough draft of the manual has been completed--any
feedback on content would be appreciated.

Lastly, I added three more tutorials: service models, the logging
interceptor, and configuration points.

===============================================================================
COPLAND-LIB

api: http://copland.rubyforge.org/copland/copland-lib/api

Copland.Lib is a collection of services for the Copland IoC container.
This first release (0.1.0) is a refactoring of services that existed in
the core Copland distribution, plus several new services.

* ENVSymbolSource: a new symbol source that provides access to
environment variables.

* RubySymbolSource: a new symbol source that provides access to the Ruby
"Config" environment.

* ClassBuilderFactory: allows services to be implemented by classes,
instead of objects.

* MulticastFactory: builds multicast services, which broadcast their
messages to a set of interested observers.

* SynchronizingInterceptor: an interceptor that provides for
synchronized access to the methods of its associated service.

* RedirectingInterceptor: an interceptor that effectively renames the
methods of its associated service, by redirecting messages that match
certain patterns.

* BlockingInterceptor: an interceptor that effectively makes methods of
the associated service private, if the invoked method matches a set of
patterns.

===============================================================================
COPLAND-REMOTE

api: http://copland.rubyforge.org/copland/copland-remote/api

Copland.Remote is a collection of services for the Copland IoC
container. This first release (0.1.0) is a refactoring of services that
existed in the core Copland distribution, plus several new services. All
Copland.Remote services deal with RPC services and services, using SOAP,
XML-RPC, and dRuby.

* DRbServerFactory: creates a new DRbServer that exports a specific
service for access over DRb by remote processes.

* DefaultDRbServer: a default service implemented by DRbServerFactory,
to make it easier for applications that only need a single DRb server
instance.

* SOAPServerFactory: creates a new SOAP server that exports a specific
set of services (and interfaces) for access by remote processes via SOAP.

* DefaultSOAPServer: a default service implemented by SOAPServerFactory,
to make it easier for applications that only need a single SOAP server
instance.

* XMLRPCServerFactory: creates a new XML-RPC server that exports a
specific set of services (and interfaces) for access by remote processes
via XML-RPC.

* DefaultXMLRPCServer: a default service implemented by
XMLRPCServerFactory, to make it easier for applications that only need a
single XML-RPC server instance.

* DRbServiceFactory: allows remote Ruby objects (exported via DRb) to be
wrapped transparently as Copland services.

* SOAPServiceFactory: allows remote objects (exported via SOAP) to be
wrapped transparently as Copland services.

* XMLRPCServiceFactory: allows remote objects (exported via XML-RPC) to
be wrapped transparently as Copland services.

===============================================================================
COPLAND-WEBRICK

api: http://copland.rubyforge.org/copland/copland-webrick/api

Copland.WEBrick is a collection of services for the Copland IoC
container. This first release (0.1.0) is a collection of new services,
never before available for Copland.. All Copland.WEBrick services deal
with WEBrick servers and servlets, in various capacities.

* HTTPServerFactory: creates a new WEBrick HTTP server as a Copland service.

* DefaultHTTPServer: a default HTTP server, implemented using
HTTPServerFactory, for applications that only need a single HTTP server
instance.

* WWWRPCServletFactory: creates new servlets that are each RPC
interfaces for an existing Copland service.

--
Jamis Buck
(e-mail address removed)
http://www.jamisbuck.org/jamis

"I use octal until I get to 8, and then I switch to decimal."
 
J

Jamis Buck

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top