MailBox v2.057: MAJOR extensions, MINOR fixes

Mark Overmeer <[email protected]> Thu, 26 Aug 2004 15:37:41 +0200
Newsgroups gmane.comp.lang.perl.modules.mail-box
Organization MARKOV Solutions
Message-ID <[email protected]>
Hi,

I've been busy in the previous month, and do not want to wait any longer
to get feedback from you!  PLEASE TEST, and be careful: many things have
"improved".  I'll publish a bug-fix release as soon as serious flaws
have shown up.

The most important changes:

 - Errors and warnings can be caught by a callback routine.

 - The $folder->delete is now optimized per folder type.  It does not
   open the folders anymore.

 - $msg->clone() can be "shallow", sharing header and body, but not
   other adminstrative data.  This speeds-up $msg->moveTo and $msg->copyTo
   considerably.

 - Mail::Box::Manage::User extends Mail::Box::Manager, not only tracking
   the opened folders, but also able to handle not-(yet)-open folders.
   (to accomplish this, Mail::Box::Indentity and Mail::Box::Collection
   have been added).
   This 'user' object has useful defaults, and makes developing server
   applications much easier.

 - Some Mail::Server::IMAP4 modules have been created, which implement
   parts of the server-side IMAP4 protocol:
     Mail::Server::IMAP4::List
     Mail::Server::IMAP4::Fetch  (was Mail::Box::IMAP4::Fetch)
     Mail::Server::IMAP4::Search (was Mail::Box::Search::IMAP, still empty)

 - loads of documentation added.  Even multiple inheritance is now
   supported by OODoc, which is required on some spots.

 - loads of tests added.  Some features are tested in the priatary
   folder type which I am developing on the moment.

Full list of changes attached.   PLEASE TEST.

Some stats:
Mail::Box version 2.057
  Number of package manuals: 135
  Real number of packages:   125
  documented subroutines:    990
  documented diagnostics:    174
  shown examples:            245
-- 
               MarkOv

------------------------------------------------------------------------
drs Mark A.C.J. Overmeer                                MARKOV Solutions
       [email protected]                          [email protected]
http://Mark.Overmeer.net                   http://solutions.overmeer.net
Changelog-2.057 (text/plain, 4 KB)
version 2.057: Thu Aug 26 14:31:34 CEST 2004

	Interface change:

	- Moved the new Mail::Box::IMAP4::Fetch to Mail::Server::IMAP4::Fetch,
	  which is a more logical name: part of a full server implementation.

	- Moved the unusable module Mail::Box::Search::IMAP4 over to
	  Mail::Server::IMAP4::Search... but still not implemented ;-)

	- You have to add (share => 0) to $msg->moveTo if the source message
	  can get undeleted in your program (for instance in a user
	  application).

	- Mail::Reporter->report(...) will return strings without \n. Sporadic
	  locations where log() was called with trailing \n are removed.

	- Opening a folder which is already open is considered an error (was
	  warning) by the manager.

	Fixes:

	- [Jan Martin Mathiassen] add IO::File to Mail::Box::Dir::Message

	- [Torsten Luettgert] found that field labels like '-' where not
	  beautified correctly with wellformedName.

	- Changed '.' from most preferred folder directory for the manager
	  into the least preferred.

	- $field->setWrapLength only worked for "fast" fields.  Tests in
	  tests/11field/40wrap.t

	- [Mike Mimic] showed that constructing unstructured "full" fields
	  was broken.

	- Mail::Box::POP3::delete() will not take any action.  Deleting all
	  contained messages was not consequent.

	Improvements:

	- [David A Golden] demonstrated the need for $head->wrap(<size>)

	- $folder->coerce($message) will only call MSGTYPE->coerce($message)
	  when not a MSGTYPE yet.

	- Mail::Box::Message::coerce() could be removed: no-op.

	- Reimplemented folder->delete(), which is not reading the messages
	  before deletion, but bluntly removes the folder in the most
	  Efficient way. You probably want the new option 'recursive'.

	- Mail::Box::new(access) now has mode 'd', which speeds up removal
	  of folders.  Used by $folder->delete().

	- Mail::Box::IMAP4 now supports deletion of a folder (untested)

	- $folder->copyTo/moveTo and $msg->copyTo can have option 'share'
	  which tries to use hardlinks i.s.o. clone() to put a message in
	  a different folder.  Only available for some M<Mail::Box::Dir>
	  folders.

	- Mail::Message::clone() now accepts shallow_head and shallow_body
	  arguments which avoid deep-cloning.

	- Added references to the Netzwert folder type, which got implemented,
	  but not released as GPL (yet?)

	- Increased the status of the IMAP folder client from alpha to beta.

	- New methods
             Mail::Box::Manager::folderdir()
	     Mail::Box::Manager::defaultFolderType()

	- New methods
	     Mail::Box::topFolderWithMessages()

	- Moved tests/44imap/40fetch.t to tests/60imap/10fetch.t

	- Mail::Box::nameOfSubFolder() now can be used as class method.

	- New, specialized folder manager
	     Mail::Box::Manage::User   manager with user knowledge
	  tests in tests/52manager/20user.t
	  explanation added to Mail::Box::Manager, about the two kinds
	  of managers.

	- New classes to administer folders, even when not opened
	     Mail::Box::Identity       info about (possibly unopened) folder
	     Mail::Box::Collection     info about groups of folders
	  tests in tests/52manager/30collect.t

	- New classes to implement parts of an IMAP4 server
	     Mail::Server              place-holder
	     Mail::Server::IMAP4       place-holder
	     Mail::Server::IMAP4::List
	  tests in tests/60imap/20list.t

	- Split tests/10report/10errors.t into
	  tests/10reporter/10errors.t and tests/10reporter/20reports.t

	- Mail::Reporter::defaultTrace can now set a callback to catch
	  each log/trace message.  Tests in tests/10reporter/30callback.t

	- [chris] Mail::Message::Field::wellformedName() will upper-case
	  *-ID as part in the fieldname.

	- [M M] tried to user MBMbox->create and expected it to open the
	  folder at the same time.  Documentation problem: moved the
	  method from "constructors" to "internal".  Did the same for
	  "foundIn".

	- Produce an error if people try to build Mail::Box::*
	  messages directly.

	- Many improvements on User::Identity module.  MailBox requires
	  version UI 0.90 now.