Revision history for Perl extension Apache2::ASP.

2.00_09   2008-10-24
  - Pages that use MasterPages are now executed with the correct @_.
  - Added Apache2::ASP::FormHandler again.

2.00_08   2008-10-23
  - Apache2::ASP::Apache creates a new HTTPContext from the correct class/subclass now.
  - Source code is filtered with: s/(\$Response\->End)/return $1/sg;

2.00_07   2008-10-22
  - Adjustments to HTTPContext to better support massive stack-depths of "inner" HTTPContexts.

2.00_06   2008-10-22
  - Tweaks in ApplicationStateManager and SessionStateManager to avoid a transaction
    race condition.
  - Config initializes itself (rather than the HTTPContext doing it).
  - Config is now cached in memory on a per-process, per-disk-path basis.

2.00_05   2008-10-20
  - Apache2::ASP::HTTPContext now handles final config initialization including
    setting %ENV vars, @INC modifications and loading modules as specified
    in the config xml file.
  - Code Coverage: 70.50% (average:stmt+bran+cond+sub)
  - Bugfix: Application->save was getting called at the beginning and end of 
    *every* request.  This behavior has been fixed.
  - Various minor tweaks, removing "vestigial" code chunks.
  - Subclassing Apache2::ASP::HTTPContext is now possible.
  - Syntax errors inside of includes are handled better.

2.00_04   2008-10-16
  - Added missing files to MANIFEST.
  - Added UploadHandler and MediaManager back to the distribution.
  - Added some upload tests.

2.00_03   2008-10-16
  - Added missing files to MANIFEST.

2.00_02   2008-10-15
  - Partial page caching has been realized.

2.00_01   2008-10-15
  - Complete rewrite.
  !!!! BREAKING CHANGES !!!!
    - XML Config file format is different!  See docs for details!
    - Apache Config file is different!  See docs for details!
  - Now "master pages" are supported a la ASP.Net (i.e. named placeholders).
  - Session and Application are only saved to database if they have been changed
    during the course of the request:
  - Major performance increase.  Using master pages instead of includes can
    further increase performance.
  - Basic tags support has been suspended for now.
  - Removed dependency Datetime::Duration.
  - Removed dependency Sys::Hostname.
  

1.59 2008-08-16
  - Added missing file t/htdocs/virtualinclude.asp to the MANIFEST
    so all tests should pass now.

1.58 2008-08-06
  - Now <!-- #include virtual="/file.asp" --> and 
    <!-- #include file="/abs/path/to/file.asp" --> work as you might expect.
    This means that Apache2::ASP will work nicely with DreamWeaver and other
    popular WYSIWYG's that can parse that sort of include directive.

1.57 2008-08-06
  - Removed POD for Request->Document.  Server-side DOM will have to wait.
  - New in this release is basic "Tags" support.  See Apache2::ASP::Tag for details.

1.56_02 2008-08-02
  - Added documentation for all Apache2::ASP::DOM::* classes.

1.56_1  2008-08-01
  - Added preliminary support for "XMLSubs"-esque tags.
  - Added preliminary (experimental) support for (!simple!) server-side DOM.
    (**Does not merge $Response->Include()'ed DOM with parent DOM).

1.55 2008-07-13
  - Apache2::ASP::SessionStateManager now uses the correct database connection.
    This problem would only come up when multiple Apache2::ASP web applications
    using different session data sources were running under the same Apache
    instance.
  - Ditto for Apache2::ASP::ApplicationStateManager.

1.54 2008-07-05
  - Adjusted Apache2::ASP::MediaManager so that it will not unlink the /MEDIA
    directory if someone attempts to delete a file and neglects to specify
    which file should be deleted.
  - Also updated Apache2::ASP::MediaManager to more gracefully handle missing
    uploaded files.

1.53 2008-07-05
  - Fixed a bug that caused Apache2::ASP::Config to die if no request filters
    were specified within the <request_filters> element in the config file.

1.52 2008-06-18
  - While using Apache2::ASP::Test::Base, $ENV{APACHE2_ASP_APPLICATION_ROOT} 
    is now persisted between requests.  This means that if (somewhere else)
    you set $ENV{APACHE2_ASP_APPLICATION_ROOT} in your code, it will persist
    between requests.

1.51 2008-06-12
  - Speed improvements, up to 100% faster now due to the following:
  - Added XML::Parser as a requirement.
  - Caching (in memory) Configuration data on a per-domain basis.

1.49 2008-05-29
  - Memory leaks are now completely gone.
  - Speed improvements (20% faster than v1.47).

1.48 2008-05-27
  - $Request->Form returns a singleton hash for the duration of
    a request.  This means that modifications to the global $Form
    object are available to other "areas" of your web application
    for the rest of the same request.

1.47 2008-05-26
  - $Request->QueryString('field') returns the querystring value for 'field'.
  - $Request->QueryString returns $ENV{HTTP_QUERYSTRING}.

1.46 2008-05-21
  - Apache2::ASP::MediaManager::before_download() must return true
    before the filehandle is opened (for the file about to be downloaded).
  - Apache2::ASP::MediaManager's before_delete() and after_delete() methods
    are now also passed the full path to the file that is to be deleted.

1.45 2008-05-15
  - Minor adjustments.

1.44 2008-05-14
  - Minor speed improvements (20% faster).
  - Miscellaneous fixes here and there.

1.43 2008-05-13
  - Fixed some damaged documentation.

1.42 2008-05-13
  - New media manager tests didn't make it in to the last release.

1.41 2008-05-13
  - Apache2::ASP::GlobalConfig will now also look 1 level "up" from
    the current working directory (retrieved from Cwd) for the 
    apache2-asp-config.xml file.  This is important for when you have
    (for example) an /sbin/ folder with asp-related scripts.
  - Added method $Server->URLDecode( $str ).
  - Minor tweaks to Apache2::ASP::MediaManager and Apache2::ASP::Test::UserAgent
    to allow testing of MediaManager classes/handlers from the command-line.
  - Added some missing POD for Apache2::ASP::Config and Apache2::ASP::Config::Node.
  - Added tests for Apache2::ASP::MediaManager.
  - Added tests for "wizard" functionality (multiple-step forms, anyways).
  - Skipped v1.40 because of the way CPAN handles version numbers.

1.39 2008-05-03
  - Apache2::ASP::Response stores the buffer as an array instead of
    as a string.
  - Performance enhancements.
  - Better test coverage for several modules.
  - More tests.

1.38 2008-03-20
  - Intrinsic ASP objects (Request, Response, etc) are now
    initialized for a handler and all of its super-classes.
    This fixes a bug in which handlers that subclass another
    handler (that subclasses yet another handler) will no longer
    receive errors when the parent class does a $Response->Redirect
    for example.
  - Apache2::ASP::MediaManager checks the 'mode' parameter and behaves
    differently based on its value.

1.37 2008-03-16
  - Updated MANIFEST to include missing file t/lib/MyDBI.pm

1.36 2008-03-04
  - Rewrote Apache2::ASP::Config and Apache2::ASP::GlobalConfig.
  - Removed Apache2::ASP::PostConfigHandler.
  - You no longer need to include the following in your httpd.conf:
      PerlModule Apache2::ASP::PostConfigHandler
      PerlPostConfigHandler Apache2::ASP::PostConfigHandler
  - Minor speed improvements as a result of cleaner config logic.

1.35 2008-02-27
  - Removed all references to "use CGI" to reduce memory footprint
    and improve performance.
  - Added Apache2::ASP::SimpleCGI for use by Apache2::ASP::Test::UserAgent.
  - Added dependency HTTP::Body for Apache2::ASP::SimpleCGI to function.

1.34 2008-02-26
  - Minor updates to Apache2::ASP::MediaManager.
  - Added a workaround to Apache2::ASP::GlobalConfig for the
    "internal dummy connection" issue.
    More details at http://wiki.apache.org/httpd/InternalDummyConnection

1.33 2008-02-25
  - Fixed a bug that caused the intrinsic ASP objects (Request, Response, etc)
    to not be available at the right point in time for UploadHook subclasses
    (including subclasses of MediaManager).
    So now, calling $Response->Redirect(...) from sub after_create() will work.

1.32 2008-02-24
  - Removed Application_OnStart and added Server_OnStart event to
    GlobalASA.
  - Added documentation to Apache2::ASP::Test::Base.
  - Added documentation to Apache2::ASP::Test::Fixtures.

1.31 2008-02-20
  - Added $Session->reset() method.
  - Added Apache2::ASP::Test::Base.
  - Added dependancy Data::Properties::YAML
  - Added /etc/properties.yaml
  - Added Apache2::ASP::Test::Fixtures.
  - Added /etc/test_fixtures.yaml
  - Fixed a bug in Apache2::ASP::Request that caused forms with multiple
    values for the same parameter (i.e. 3 checkboxes named the same, but 
    with different values) to only return 1 value.
  - Completely overhauled the test suite.  No longer requires Apache::Test
    and should run find as root.  More tests are needed, but at least
    what's there should run correctly.
  - Fixed a bug in Apache2::ASP::Config that caused errors when a 
    Session or Application State Manager was not in @INC until
    after the <settings> section had been initialized.

1.29 2008-02-06
  - Fixed a bug that caused Response->Include to misbehave when used in
    conjunction with RequestFilters.

1.28 2008-02-06
  - Added $Response->Decline and changed the return value of $Response->End
    and $Response->Redirect to 0 and 302 respectively.
  - Now inside RequestFilters you can simply say 'return $Response->Declined'
    or 'return $Response->Redirect("/mypage.asp")' to exit the RequestFilter.
  - Documentation for RequestFilters and Response needs to be updated to
    reflect this change.

1.27 2008-02-06
  - Moved the <request_filters> config section under config/web_application 
    instead of config/web_application/settings.

1.26 2008-02-05
  - Hotfix for config.  Was crashing unless settings.request_filters was defined.

1.25 2008-02-05
  - Added the concept of "Request Filters" as Apache2::ASP::RequestFilter.  These
    are useful for centralizing authorization code.  Request Filters are stackable.
  - Added config.web_application.settings.request_filters.filter and documented it in
    the documentation for Apache2::ASP::RequestFilter.
  - Request Filters will be considered experimental until v1.26 is released.

1.24 2008-01-17
  - Fixes a problem with $Request->Cookies( $name ) that caused it to return undef
    instead of the cookie's value.
  - When Response->Include( $nonexistent_file ) is called, a simple diagnostic is
    printed to the buffer ("Cannot Response.Include '$file' - the file does not exist")
    and Carp::cluck dumps a stacktrace to STDERR.
  - If $Response->End or $Response->Redirect is called in Script_OnStart then the script
    is no longer processed.

1.23 2007-12-27
  - Apache2::ASP::Config now only adds PAGE_CACHE and $Config->handler_root to @INC
    if they have not already been added before.
  - Apache2::ASP::Response no longer flushes headers after Response.Include().

1.22 2007-12-18
  - Fixed a bug that caused changes in the $Session object made
    from within $Response->Include() and $Response->TrapInclude() to not persist.
  - Removed warnings like this:
    Use of uninitialized value in substitution (s///) at /usr/lib/perl5/site_perl/5.8.5/Apache2/ASP/Server.pm line 40.
  - $Session->save() does not (wastefully) persist $s->{asp} any longer.
  - Apache2::ASP::Request was handling cookies wrong.  This behavior has been improved.
    Still does not handle expiration yet (this can be done with $Response->AddHeader(...) ).
  - Improved (fixed) problems associated with running multiple Apache2::ASP-powered websites
    under the same Apache server under different VirtualHosts.  Now expects PerlOptions +Parent 
    and PerlSetEnv APACHE2_ASP_APPLICATION_ROOT /path/to/your/root inside of <VirtualHost> directives.

1.21 2007-12-04
  - Bugfixes to Apache2::ASP::Request and Apache2::ASP::Response.
  - *Recommended* upgrade to this version if you are running any previous version.

1.20 2007-10-22
  - Updated Makefile.PL to compile even if Apache::Test is not installed.
  - Added requirement Apache2::Directive.

1.19 2007-10-20
  - Minor updates in preparation for the release of Apache2::ASP::WebApp.

1.18 2007-10-20
  - Added before_run() and after_run() methods to Apache2::ASP::Handler.
    These methods can be overridden by subclasses and executed before and
    after the "run()" method is called.

1.17 2007-10-20
  - Updates for Apache2::ASP::Test::UserAgent.
  - Updates for Apache2::ASP::Test::MockRequest.

1.16 2007-10-20
  - Adjusted Apache2::ASP::Config and Apache2::ASP::GlobalConfig to properly support
    support running multiple websites under one Apache instance.
  - Removed "sticky forms" support.

1.15 2007-07-03
  - Added several new pages to the Manual.
  - /handlers/My_Handler and /handlers/My/Handler both map to My::Handler
    for the package and /handlers/My/Handler.pm for the filename.
  - Updated documentation in several places.
  - Local GlobalASA.pm class is now required to use web_application.application_name + '::GlobalASA'
    as its package name.  So if web_application.application_name = "DefaultApp" then
    it would say:
    package DefaultApp::GlobalASA;
    use base 'Apache2::ASP::GlobalASA';
    ...
  - Multiple Apache2::ASP web applications can now be run on the same machine.
  - Successfully installed on Windows, but it requires some work.  And performance is bad.

1.14 2007-06-30
  - $Form data is only forwarded if a page is posting back to itself 
    (i.e. - paging through a recordset) or if the form was posted to
    a FormHandler class.

1.13 2007-06-30
  - Apache2::ASP::Config is subclassable.
  - Added <settings> element in config XML file.
  - Added $Config->settings->(lib|dsn|username|password) to $Config object.
  - $Config->settings->lib is added to @INC automatically.

1.12 2007-06-29
  - Stabilized off-line web application testing API.

1.11 2007-06-29
  - Apache2::ASP::Test::MockRequest was missing Cwd::cwd().

1.09 2007-06-29
  - Added POD for Apache2::ASP::Test::UserAgent.
  - ApplicationStateManager and SessionStateManager are both Ima::DBI subclasses.
  - Added dependency Ima::DBI.
  - Removed dependency Apache::DBI.

1.08 2007-06-28
  - Fixed bug "Upload hook failed: Can't call method "isa" on an undefined value at ..."
  - Fixed bug that resulted in multiple cookies being created on the initial request,
    when the first ASP script to be rendered contained Include() or TrapInclude() calls.
  - Added HTML::FillInForm as a dependency.
  - Added built-in "sticky forms" for all ASP scripts, exclusive of UploadHandler subclasses.
  - Began new offline test framework.
  - Added Apache2::ASP::Test::UserAgent.
  - Added Apache2::ASP::Test::MockRequest.
  - Updated Apache2::ASP::Request to work within the new test framework.
  - Removed some tests that need to be rewritten with the new test framework.
  - Updated some other tests to work with the new test framework as they are.
  - Added dependencies HTTP::Request::AsCGI, HTML::FillInForm and CGI::Simple.

1.07 2007-06-23
  - Fixed a bug that caused 404 errors to return a blank page instead of the standard
    '404 Not Found' message.
  - Adjusted POD so that Apache2::ASP::Manual::Intro shows up correctly.

1.06 2007-06-23
  - Fixed a bug in Apache2::ASP::PageHandler that caused a bug in which changed ASP
    scripts would not be reloaded by other Apache processes after the first Apache
    process had recompiled the *.pm file as a result of the ASP script being changed.

1.05 2007-06-23
  - $Application->save() is now called at the end of each (non-error) request.

1.04 2007-06-23
  - GlobalASA::Script_OnFlush is only called when the current handler
    isa Apache2::ASP::PageHandler.

1.03 2007-06-23
  - Updated Apache2::ASP::PageHandler to correctly decide whether an ASP
    script should be recompiled or not.

1.02 2007-06-23
  - Apache2::ASP::Manual::Intro was changed from *.pod to *.pm so that CPAN
    would index it properly.

1.01 2007-06-22
  - Fixed POD in Apache2::ASP::Config.
  - Apache2::ASP::Config now verifies the validity of web_application.domain_re values.

0.18 2007-06-22
  - Completely rewrote almost everything.
  - Almost everything not rewritten was refactored.
  - Added tests to achieve nearly 100% code coverage.
  - Changed the interface for Apache2::ASP::Handler.
  - Changed the interface for Apache2::ASP::UploadHandler.
  - Changed the interface for Apache2::ASP::MediaManager.
  - ASP scripts are converted into *.pm files, then loaded via require().
  - If the ASP has not changed, we don't recompile the ASP.
  - If the ASP did change since the *.pm file was written, we recompile the ASP.
  - I hope to be able to perform code coverage testing on ASP scripts at some point.
  - Added Apache2::ASP::Config.
  - Changed the apache2-asp-config.xml format to support Apache2::ASP::Config.
  - Added Apache2::ASP::PostConfigHandler.
  - Added Apache2::ASP::PageHandler.
  - Added Apache2::ASP::ApacheRequest.
  - Added Apache2::ASP::UploadHook.
  - Added Apache2::ASP::UploadHookArgs.
  - Added Apache2::ASP::TransHandler.
  - Broke out Apache2::ASP::Application into ApplicationStateManager and its 
    database-specific subclasses (*::SQLite, *::MySQL, etc).
  - Broke out Apache2::ASP::Session into SessionStateManager and its database-specific
    subclasses (*::SQLite, *::MySQL, etc).
  - Added the ability to subclass Apache2::ASP::Base.
  - Apache2::ASP is now a subclass of Apache2::ASP::Base.
  - Code coverage (on average) is above 90%
  - Added requirements that the directory @ServerRoot@/PAGE_CACHE must exist and 
    must be readable/writable by the server process.
  - Added the ability to have several web applications defined in one apache2-asp-config.xml file.
  - Added documentation for all classes.

0.17 2007-06-03
  - Added the ability to subclass Apache2::ASP::Application
  - Added the ability to subclass Apache2::ASP::Session
  - Added the register_mode() method to Apache2::ASP::Handler

0.16 2007-06-02
  - Added tests for Apache2::ASP::MediaManager.
  - Updated documentation for Apache2::ASP::MediaManager.
  - Updated documentation for Apache2::ASP.

0.15 2007-06-02
  - Added the ability to register "mode" handlers for subclasses
    of Apache2::ASP::MediaManager.

0.14 2007-05-31
  - Fixed a bug in the Apache2::ASP::Parser that would cause
    an error if it encountered a ~ in an ASP script.

0.13 2007-05-31
  - Extended Apache2::ASP::MediaManager
  - Updated documentation for Apache2::ASP::MediaManager
  - Added Apache2::ASP::URLFilter
  - Updated INSTALLATION instructions in the documentation for Apache2::ASP

0.12 2007-05-30
  - Added Apache2::ASP::MediaManager
  - Fixed documentation for Apache2::ASP::UploadHandler

0.11 2007-05-30
  - Fixed inaccurate documentation about the table structure for Sessions.

0.10 2007-05-30
  - Minor bugfixes.

0.09 2007-05-30
  - Updated "Changes"
  - Updated tests' httpd.conf (removed erroneous comments)
  - Refactored Apache2::ASP::handler

0.08 2007-05-29
  - Added Apache2::ASP::UploadHandler
  - Added Apache2::ASP::CGI
  - Added tests for UploadHandler
  - Updated documentation
  - Added database-persistence for Application state
  - Added tests for Apache2::ASP::Application

0.07  2007-05-25
  - Updated documentation for Apache2::ASP::Handler

0.06  2007-05-25
  - Previous releases did not include the test suite.

0.05  2007-05-25
  - Condensed Apache2::ASP::Session and Apache2::ASP::Session::Instance
  - Updated documentation and tests for Session change.
  - Updated version number to 0.05 across all modules.

0.04  2007-05-25
  - Updated Apache2::ASP's handling of Handlers.
  - Updated documentation and tests.

0.03  2007-05-25
  - Added Apache2::ASP::Handler.
  - Updated documentation.
  - Updated tests to include Apache2::ASP::Handler.
  - Updated Makefile.PL to account for all prerequisites.
  - Lowered the minimum versions for several prerequisites.

0.02  2007-05-24
  - Added documentation.

0.01  Wed May 23 13:51:46 2007
  - original version; created by h2xs 1.23 with options
    -AXn Apache2::ASP