[Rt-commit] rt branch, overlay_cleanup, updated. rt-3.8.8-453-gf379fb8

Jesse Vincent jesse at bestpractical.com
Wed Aug 18 13:45:45 EDT 2010


The branch, overlay_cleanup has been updated
       via  f379fb81cd5e8add32c2c39fa2cea7fa6a3c76c4 (commit)
       via  72cc7aa553ffd690b8ff7bc401c7e4ab5595e9f6 (commit)
       via  6f1f2d41f8f9c3deb1b9f3d07b42a740b004ccfb (commit)
       via  1592e3e842a5851ffa580466a4afc8d70cc90d9c (commit)
      from  87c380652a5056efb4146fc29d78d8567a9bb195 (commit)

Summary of changes:
 UPGRADING                                     |   10 +++
 lib/RT.pm.in                                  |    6 +-
 lib/RT/ACE.pm                                 |   20 ------
 lib/RT/ACL.pm                                 |   20 ------
 lib/RT/Action.pm                              |    5 +-
 lib/RT/Action/AutoOpen.pm                     |    5 +-
 lib/RT/Action/Autoreply.pm                    |    5 +-
 lib/RT/Action/CreateTickets.pm                |    5 +-
 lib/RT/Action/EscalatePriority.pm             |    5 +-
 lib/RT/Action/ExtractSubjectTag.pm            |   10 +---
 lib/RT/Action/Generic.pm                      |   80 -------------------------
 lib/RT/Action/LinearEscalate.pm               |    5 +-
 lib/RT/Action/Notify.pm                       |    5 +-
 lib/RT/Action/NotifyAsComment.pm              |    5 +-
 lib/RT/Action/NotifyGroup.pm                  |   10 +---
 lib/RT/Action/NotifyGroupAsComment.pm         |   10 +---
 lib/RT/Action/RecordComment.pm                |    5 +-
 lib/RT/Action/RecordCorrespondence.pm         |    5 +-
 lib/RT/Action/ResolveMembers.pm               |    5 +-
 lib/RT/Action/SendEmail.pm                    |    5 +-
 lib/RT/Action/SetPriority.pm                  |    5 +-
 lib/RT/Action/UserDefined.pm                  |    5 +-
 lib/RT/Approval.pm                            |   10 +---
 lib/RT/Approval/Rule.pm                       |   10 +---
 lib/RT/Attachment.pm                          |   20 ------
 lib/RT/Attachments.pm                         |   20 ------
 lib/RT/Attribute.pm                           |   20 ------
 lib/RT/Attributes.pm                          |   20 ------
 lib/RT/CachedGroupMember.pm                   |   20 ------
 lib/RT/CachedGroupMembers.pm                  |   20 ------
 lib/RT/Condition.pm                           |    5 +-
 lib/RT/Condition/AnyTransaction.pm            |    5 +-
 lib/RT/Condition/BeforeDue.pm                 |    5 +-
 lib/RT/Condition/CloseTicket.pm               |    5 +-
 lib/RT/Condition/Generic.pm                   |   80 -------------------------
 lib/RT/Condition/Overdue.pm                   |    5 +-
 lib/RT/Condition/OwnerChange.pm               |    5 +-
 lib/RT/Condition/PriorityChange.pm            |    5 +-
 lib/RT/Condition/PriorityExceeds.pm           |    5 +-
 lib/RT/Condition/QueueChange.pm               |    5 +-
 lib/RT/Condition/ReopenTicket.pm              |    5 +-
 lib/RT/Condition/StatusChange.pm              |    5 +-
 lib/RT/Condition/UserDefined.pm               |    5 +-
 lib/RT/Config.pm                              |   10 +---
 lib/RT/Crypt/GnuPG.pm                         |   10 +---
 lib/RT/CurrentUser.pm                         |    5 +-
 lib/RT/CustomField.pm                         |   20 ------
 lib/RT/CustomFieldValue.pm                    |   20 ------
 lib/RT/CustomFieldValues.pm                   |   20 ------
 lib/RT/CustomFieldValues/External.pm          |   10 +---
 lib/RT/CustomFieldValues/Groups.pm            |   10 +---
 lib/RT/CustomFields.pm                        |   20 ------
 lib/RT/Dashboard.pm                           |    5 +-
 lib/RT/Date.pm                                |    5 +-
 lib/RT/EmailParser.pm                         |    5 +-
 lib/RT/Group.pm                               |   20 ------
 lib/RT/GroupMember.pm                         |   20 ------
 lib/RT/GroupMembers.pm                        |   20 ------
 lib/RT/Groups.pm                              |   20 ------
 lib/RT/Handle.pm                              |    5 +-
 lib/RT/I18N.pm                                |    5 +-
 lib/RT/I18N/i_default.pm                      |    5 +-
 lib/RT/Installer.pm                           |   10 +---
 lib/RT/Interface/CLI.pm                       |    5 +-
 lib/RT/Interface/Email.pm                     |    5 +-
 lib/RT/Interface/Email/Auth/GnuPG.pm          |    9 +---
 lib/RT/Interface/Email/Auth/MailFrom.pm       |    5 +-
 lib/RT/Interface/Email/Filter/SpamAssassin.pm |    5 +-
 lib/RT/Interface/REST.pm                      |   10 +---
 lib/RT/Interface/Web.pm                       |    5 +-
 lib/RT/Interface/Web/QueryBuilder.pm          |    5 +-
 lib/RT/Interface/Web/QueryBuilder/Tree.pm     |    5 +-
 lib/RT/Link.pm                                |   20 ------
 lib/RT/Links.pm                               |   20 ------
 lib/RT/ObjectCustomField.pm                   |   20 ------
 lib/RT/ObjectCustomFieldValue.pm              |   20 ------
 lib/RT/ObjectCustomFieldValues.pm             |   20 ------
 lib/RT/ObjectCustomFields.pm                  |   20 ------
 lib/RT/Plugin.pm                              |   10 +---
 lib/RT/Principal.pm                           |   20 ------
 lib/RT/Principals.pm                          |   20 ------
 lib/RT/Queue.pm                               |   20 ------
 lib/RT/Queues.pm                              |   20 ------
 lib/RT/Record.pm                              |    5 +-
 lib/RT/Reminders.pm                           |   10 +---
 lib/RT/Report/Tickets.pm                      |   10 +---
 lib/RT/Report/Tickets/Entry.pm                |   10 +---
 lib/RT/Rule.pm                                |   10 +---
 lib/RT/Ruleset.pm                             |   10 +---
 lib/RT/SQL.pm                                 |   10 +---
 lib/RT/SavedSearch.pm                         |    5 +-
 lib/RT/SavedSearches.pm                       |    5 +-
 lib/RT/Scrip.pm                               |   20 ------
 lib/RT/ScripAction.pm                         |   20 ------
 lib/RT/ScripActions.pm                        |   20 ------
 lib/RT/ScripCondition.pm                      |   20 ------
 lib/RT/ScripConditions.pm                     |   20 ------
 lib/RT/Scrips.pm                              |   20 ------
 lib/RT/Search.pm                              |    5 +-
 lib/RT/Search/ActiveTicketsInQueue.pm         |    5 +-
 lib/RT/Search/FromSQL.pm                      |    5 +-
 lib/RT/Search/Generic.pm                      |   80 -------------------------
 lib/RT/Search/Googleish.pm                    |    5 +-
 lib/RT/SearchBuilder.pm                       |    5 +-
 lib/RT/SharedSetting.pm                       |    5 +-
 lib/RT/StyleGuide.pod                         |   16 +++++
 lib/RT/System.pm                              |    5 +-
 lib/RT/Template.pm                            |   20 ------
 lib/RT/Templates.pm                           |   20 ------
 lib/RT/Ticket.pm                              |   20 ------
 lib/RT/Tickets.pm                             |   20 ------
 lib/RT/Transaction.pm                         |   20 ------
 lib/RT/Transactions.pm                        |   20 ------
 lib/RT/URI.pm                                 |    5 +-
 lib/RT/URI/base.pm                            |    5 +-
 lib/RT/URI/fsck_com_rt.pm                     |    5 +-
 lib/RT/User.pm                                |   20 ------
 lib/RT/Users.pm                               |   20 ------
 lib/RT/Util.pm                                |   10 +---
 sbin/factory                                  |   20 ------
 t/00-compile.t                                |   11 +--
 121 files changed, 105 insertions(+), 1462 deletions(-)
 delete mode 100644 lib/RT/Action/Generic.pm
 delete mode 100644 lib/RT/Condition/Generic.pm
 delete mode 100644 lib/RT/Search/Generic.pm

- Log -----------------------------------------------------------------
commit 1592e3e842a5851ffa580466a4afc8d70cc90d9c
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 13:12:44 2010 -0400

    Remove yet-still-more string eval overlay loads

diff --git a/lib/RT/Action.pm b/lib/RT/Action.pm
index 2197fd1..8b72687 100755
--- a/lib/RT/Action.pm
+++ b/lib/RT/Action.pm
@@ -219,9 +219,6 @@ sub DESTROY {
 
 # }}}
 
-eval "require RT::Action_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action_Vendor.pm});
-eval "require RT::Action_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/AutoOpen.pm b/lib/RT/Action/AutoOpen.pm
index db373d9..96a7a72 100755
--- a/lib/RT/Action/AutoOpen.pm
+++ b/lib/RT/Action/AutoOpen.pm
@@ -120,9 +120,6 @@ sub Commit {
     return 1;
 }
 
-eval "require RT::Action::AutoOpen_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/AutoOpen_Vendor.pm});
-eval "require RT::Action::AutoOpen_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/AutoOpen_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/Autoreply.pm b/lib/RT/Action/Autoreply.pm
index e7af0f8..6f27eea 100755
--- a/lib/RT/Action/Autoreply.pm
+++ b/lib/RT/Action/Autoreply.pm
@@ -127,9 +127,6 @@ sub SetRTSpecialHeaders {
 
 # }}}
 
-eval "require RT::Action::Autoreply_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Autoreply_Vendor.pm});
-eval "require RT::Action::Autoreply_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Autoreply_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/CreateTickets.pm b/lib/RT/Action/CreateTickets.pm
index 04d93a0..7ff5fc2 100755
--- a/lib/RT/Action/CreateTickets.pm
+++ b/lib/RT/Action/CreateTickets.pm
@@ -1239,10 +1239,7 @@ sub PostProcess {
 
 }
 
-eval "require RT::Action::CreateTickets_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/CreateTickets_Vendor.pm} );
-eval "require RT::Action::CreateTickets_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/CreateTickets_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Action/EscalatePriority.pm b/lib/RT/Action/EscalatePriority.pm
index 63334a7..60f64c5 100755
--- a/lib/RT/Action/EscalatePriority.pm
+++ b/lib/RT/Action/EscalatePriority.pm
@@ -158,9 +158,6 @@ sub Commit {
    }
 }
 
-eval "require RT::Action::EscalatePriority_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/EscalatePriority_Vendor.pm});
-eval "require RT::Action::EscalatePriority_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/EscalatePriority_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/ExtractSubjectTag.pm b/lib/RT/Action/ExtractSubjectTag.pm
index f8dc1fb..0ff8562 100644
--- a/lib/RT/Action/ExtractSubjectTag.pm
+++ b/lib/RT/Action/ExtractSubjectTag.pm
@@ -90,14 +90,6 @@ sub Commit {
     return (1);
 }
 
-eval "require RT::Action::ExtractSubjectTag_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/ExtractSubjectTag_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Action::ExtractSubjectTag_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/ExtractSubjectTag_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/LinearEscalate.pm b/lib/RT/Action/LinearEscalate.pm
index efdbf31..c1f6c7a 100755
--- a/lib/RT/Action/LinearEscalate.pm
+++ b/lib/RT/Action/LinearEscalate.pm
@@ -263,10 +263,7 @@ sub Commit {
     return 1;
 }
 
-eval "require RT::Action::LinearEscalate_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/LinearEscalate_Vendor.pm} );
-eval "require RT::Action::LinearEscalate_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/LinearEscalate_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Action/Notify.pm b/lib/RT/Action/Notify.pm
index f086d54..bf1e179 100755
--- a/lib/RT/Action/Notify.pm
+++ b/lib/RT/Action/Notify.pm
@@ -162,9 +162,6 @@ sub SetRecipients {
 
 }
 
-eval "require RT::Action::Notify_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Notify_Vendor.pm});
-eval "require RT::Action::Notify_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Notify_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/NotifyAsComment.pm b/lib/RT/Action/NotifyAsComment.pm
index ff04c8a..de10add 100755
--- a/lib/RT/Action/NotifyAsComment.pm
+++ b/lib/RT/Action/NotifyAsComment.pm
@@ -70,9 +70,6 @@ sub SetReturnAddress {
     return $self->SUPER::SetReturnAddress( @_, is_comment => 1 );
 }
 
-eval "require RT::Action::NotifyAsComment_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyAsComment_Vendor.pm});
-eval "require RT::Action::NotifyAsComment_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyAsComment_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/NotifyGroup.pm b/lib/RT/Action/NotifyGroup.pm
index d16e51c..dcd9d81 100644
--- a/lib/RT/Action/NotifyGroup.pm
+++ b/lib/RT/Action/NotifyGroup.pm
@@ -201,14 +201,6 @@ L<RT::Action::NotifyGroupAsComment>, F<rt-email-group-admin>
 
 =cut
 
-eval "require RT::Action::NotifyGroup_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyGroup_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Action::NotifyGroup_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyGroup_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/NotifyGroupAsComment.pm b/lib/RT/Action/NotifyGroupAsComment.pm
index eb54c8a..0cc63fa 100644
--- a/lib/RT/Action/NotifyGroupAsComment.pm
+++ b/lib/RT/Action/NotifyGroupAsComment.pm
@@ -78,14 +78,6 @@ Ruslan U. Zakirov E<lt>ruz at bestpractical.comE<gt>
 
 =cut
 
-eval "require RT::Action::NotifyGroupAsComment_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyGroupAsComment_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Action::NotifyGroupAsComment_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyGroupAsComment_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/RecordComment.pm b/lib/RT/Action/RecordComment.pm
index 51455ff..2704610 100644
--- a/lib/RT/Action/RecordComment.pm
+++ b/lib/RT/Action/RecordComment.pm
@@ -111,9 +111,6 @@ sub CreateTransaction {
 }
     
 
-eval "require RT::Action::RecordComment_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/RecordComment_Vendor.pm});
-eval "require RT::Action::RecordComment_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/RecordComment_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/RecordCorrespondence.pm b/lib/RT/Action/RecordCorrespondence.pm
index 8901832..ad1a6b4 100644
--- a/lib/RT/Action/RecordCorrespondence.pm
+++ b/lib/RT/Action/RecordCorrespondence.pm
@@ -112,9 +112,6 @@ sub CreateTransaction {
 }
     
 
-eval "require RT::Action::RecordCorrespondence_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/RecordCorrespondence_Vendor.pm});
-eval "require RT::Action::RecordCorrespondence_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/RecordCorrespondence_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/ResolveMembers.pm b/lib/RT/Action/ResolveMembers.pm
index 699c62b..3351a8c 100755
--- a/lib/RT/Action/ResolveMembers.pm
+++ b/lib/RT/Action/ResolveMembers.pm
@@ -102,10 +102,7 @@ sub IsApplicable  {
 }
 # }}}
 
-eval "require RT::Action::ResolveMembers_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/ResolveMembers_Vendor.pm});
-eval "require RT::Action::ResolveMembers_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/ResolveMembers_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Action/SendEmail.pm b/lib/RT/Action/SendEmail.pm
index 614c5db..c33a19a 100755
--- a/lib/RT/Action/SendEmail.pm
+++ b/lib/RT/Action/SendEmail.pm
@@ -1091,10 +1091,7 @@ sub MIMEEncodeString {
     return RT::Interface::Email::EncodeToMIME( String => $_[0], Charset => $_[1] );
 }
 
-eval "require RT::Action::SendEmail_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/SendEmail_Vendor.pm} );
-eval "require RT::Action::SendEmail_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/SendEmail_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Action/SetPriority.pm b/lib/RT/Action/SetPriority.pm
index eeb1a65..2668ff0 100755
--- a/lib/RT/Action/SetPriority.pm
+++ b/lib/RT/Action/SetPriority.pm
@@ -76,9 +76,6 @@ sub Commit {
 
 }
 
-eval "require RT::Action::SetPriority_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/SetPriority_Vendor.pm});
-eval "require RT::Action::SetPriority_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/SetPriority_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/UserDefined.pm b/lib/RT/Action/UserDefined.pm
index 6736c0a..c41623c 100755
--- a/lib/RT/Action/UserDefined.pm
+++ b/lib/RT/Action/UserDefined.pm
@@ -83,10 +83,7 @@ sub Commit {
     return ($retval);
 }
 
-eval "require RT::Action::UserDefined_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/UserDefined_Vendor.pm});
-eval "require RT::Action::UserDefined_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/UserDefined_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Approval.pm b/lib/RT/Approval.pm
index 8745bc5..49242cf 100644
--- a/lib/RT/Approval.pm
+++ b/lib/RT/Approval.pm
@@ -61,14 +61,6 @@ RT::Ruleset->Add(
         'RT::Approval::Rule::Created',
     ]);
 
-eval "require RT::Approval_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Approval_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Approval_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Approval_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Approval/Rule.pm b/lib/RT/Approval/Rule.pm
index 21c62b2..673d5c8 100644
--- a/lib/RT/Approval/Rule.pm
+++ b/lib/RT/Approval/Rule.pm
@@ -75,15 +75,7 @@ sub GetTemplate {
     return $template;
 }
 
-eval "require RT::Approval::Rule_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Approval/Rule_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Approval::Rule_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Approval/Rule_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition.pm b/lib/RT/Condition.pm
index 8918a18..0e871b6 100755
--- a/lib/RT/Condition.pm
+++ b/lib/RT/Condition.pm
@@ -225,9 +225,6 @@ sub DESTROY {
 
 # }}}
 
-eval "require RT::Condition_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition_Vendor.pm});
-eval "require RT::Condition_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Condition/AnyTransaction.pm b/lib/RT/Condition/AnyTransaction.pm
index dd0bd34..526a2bd 100755
--- a/lib/RT/Condition/AnyTransaction.pm
+++ b/lib/RT/Condition/AnyTransaction.pm
@@ -63,10 +63,7 @@ sub IsApplicable {
     return(1);
 }
 
-eval "require RT::Condition::AnyTransaction_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/AnyTransaction_Vendor.pm});
-eval "require RT::Condition::AnyTransaction_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/AnyTransaction_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/BeforeDue.pm b/lib/RT/Condition/BeforeDue.pm
index aaf59af..dbfb987 100755
--- a/lib/RT/Condition/BeforeDue.pm
+++ b/lib/RT/Condition/BeforeDue.pm
@@ -78,9 +78,6 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::BeforeDue_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/BeforeDue_Vendor.pm});
-eval "require RT::Condition::BeforeDue_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/BeforeDue_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Condition/CloseTicket.pm b/lib/RT/Condition/CloseTicket.pm
index e72d36e..ec4b4ce 100644
--- a/lib/RT/Condition/CloseTicket.pm
+++ b/lib/RT/Condition/CloseTicket.pm
@@ -76,9 +76,6 @@ sub IsApplicable {
     return 1;
 }
 
-eval "require RT::Condition::CloseTicket_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/CloseTicket_Vendor.pm});
-eval "require RT::Condition::CloseTicket_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/CloseTicket_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Condition/Overdue.pm b/lib/RT/Condition/Overdue.pm
index 61809b4..7f2f7e6 100755
--- a/lib/RT/Condition/Overdue.pm
+++ b/lib/RT/Condition/Overdue.pm
@@ -78,10 +78,7 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::Overdue_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Overdue_Vendor.pm});
-eval "require RT::Condition::Overdue_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Overdue_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/OwnerChange.pm b/lib/RT/Condition/OwnerChange.pm
index b89599e..37bede9 100755
--- a/lib/RT/Condition/OwnerChange.pm
+++ b/lib/RT/Condition/OwnerChange.pm
@@ -69,10 +69,7 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::OwnerChange_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/OwnerChange_Vendor.pm});
-eval "require RT::Condition::OwnerChange_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/OwnerChange_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/PriorityChange.pm b/lib/RT/Condition/PriorityChange.pm
index 8773765..b20c278 100644
--- a/lib/RT/Condition/PriorityChange.pm
+++ b/lib/RT/Condition/PriorityChange.pm
@@ -68,10 +68,7 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::PriorityChange_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/PriorityChange_Vendor.pm});
-eval "require RT::Condition::PriorityChange_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/PriorityChange_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/PriorityExceeds.pm b/lib/RT/Condition/PriorityExceeds.pm
index c512fe9..97d1e99 100755
--- a/lib/RT/Condition/PriorityExceeds.pm
+++ b/lib/RT/Condition/PriorityExceeds.pm
@@ -66,10 +66,7 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::PriorityExceeds_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/PriorityExceeds_Vendor.pm});
-eval "require RT::Condition::PriorityExceeds_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/PriorityExceeds_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/QueueChange.pm b/lib/RT/Condition/QueueChange.pm
index 793e8c3..ff1c76f 100755
--- a/lib/RT/Condition/QueueChange.pm
+++ b/lib/RT/Condition/QueueChange.pm
@@ -66,10 +66,7 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::QueueChange_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/QueueChange_Vendor.pm});
-eval "require RT::Condition::QueueChange_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/QueueChange_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/ReopenTicket.pm b/lib/RT/Condition/ReopenTicket.pm
index 1a6b947..8e973e3 100644
--- a/lib/RT/Condition/ReopenTicket.pm
+++ b/lib/RT/Condition/ReopenTicket.pm
@@ -81,9 +81,6 @@ sub IsApplicable {
     return 1;
 }
 
-eval "require RT::Condition::ReopenTicket_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/ReopenTicket_Vendor.pm});
-eval "require RT::Condition::ReopenTicket_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/ReopenTicket_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Condition/StatusChange.pm b/lib/RT/Condition/StatusChange.pm
index bb3b8eb..4f19a41 100755
--- a/lib/RT/Condition/StatusChange.pm
+++ b/lib/RT/Condition/StatusChange.pm
@@ -136,10 +136,7 @@ sub IsApplicable {
     return 1;
 }
 
-eval "require RT::Condition::StatusChange_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/StatusChange_Vendor.pm});
-eval "require RT::Condition::StatusChange_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/StatusChange_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/UserDefined.pm b/lib/RT/Condition/UserDefined.pm
index dfe1cee..6e69b0f 100755
--- a/lib/RT/Condition/UserDefined.pm
+++ b/lib/RT/Condition/UserDefined.pm
@@ -68,10 +68,7 @@ sub IsApplicable {
     return ($retval);
 }
 
-eval "require RT::Condition::UserDefined_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/UserDefined_Vendor.pm});
-eval "require RT::Condition::UserDefined_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/UserDefined_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Config.pm b/lib/RT/Config.pm
index f515f62..c432774 100644
--- a/lib/RT/Config.pm
+++ b/lib/RT/Config.pm
@@ -1082,14 +1082,6 @@ sub UpdateOption {
     return 1;
 }
 
-eval "require RT::Config_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Config_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Config_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Config_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Crypt/GnuPG.pm b/lib/RT/Crypt/GnuPG.pm
index d6dea42..3d9c81d 100644
--- a/lib/RT/Crypt/GnuPG.pm
+++ b/lib/RT/Crypt/GnuPG.pm
@@ -2463,15 +2463,7 @@ sub _make_gpg_handles {
     return ($handles, \%handle_map);
 }
 
-eval "require RT::Crypt::GnuPG_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Crypt/GnuPG_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Crypt::GnuPG_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Crypt/GnuPG_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 # helper package to avoid using temp file
 package IO::Handle::CRLF;
diff --git a/lib/RT/CurrentUser.pm b/lib/RT/CurrentUser.pm
index fa0b98b..a506b9e 100755
--- a/lib/RT/CurrentUser.pm
+++ b/lib/RT/CurrentUser.pm
@@ -311,9 +311,6 @@ sub Authenticate {
     return ($password eq $auth_digest);
 }
 
-eval "require RT::CurrentUser_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/CurrentUser_Vendor.pm});
-eval "require RT::CurrentUser_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/CurrentUser_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/CustomFieldValues/External.pm b/lib/RT/CustomFieldValues/External.pm
index fcba8bf..ec60928 100644
--- a/lib/RT/CustomFieldValues/External.pm
+++ b/lib/RT/CustomFieldValues/External.pm
@@ -222,14 +222,6 @@ sub LimitToCustomField {
     return $self->SUPER::LimitToCustomField( @_ );
 }
 
-eval "require RT::CustomFieldValues::External_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues/External_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::CustomFieldValues::External_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues/External_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/CustomFieldValues/Groups.pm b/lib/RT/CustomFieldValues/Groups.pm
index 91de36d..01022c8 100644
--- a/lib/RT/CustomFieldValues/Groups.pm
+++ b/lib/RT/CustomFieldValues/Groups.pm
@@ -75,14 +75,6 @@ sub ExternalValues {
     return \@res;
 }
 
-eval "require RT::CustomFieldValues::Groups_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues/Groups_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::CustomFieldValues::Groups_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues/Groups_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Dashboard.pm b/lib/RT/Dashboard.pm
index b98501d..401933a 100644
--- a/lib/RT/Dashboard.pm
+++ b/lib/RT/Dashboard.pm
@@ -330,9 +330,6 @@ sub CurrentUserCanSubscribe {
     $self->_CurrentUserCan($privacy, FullRight => 'SubscribeDashboard');
 }
 
-eval "require RT::Dashboard_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Dashboard_Vendor.pm});
-eval "require RT::Dashboard_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Dashboard_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Date.pm b/lib/RT/Date.pm
index 86487eb..c3890f9 100755
--- a/lib/RT/Date.pm
+++ b/lib/RT/Date.pm
@@ -1042,9 +1042,6 @@ sub Timezone {
 }
 
 
-eval "require RT::Date_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Date_Vendor.pm});
-eval "require RT::Date_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Date_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/EmailParser.pm b/lib/RT/EmailParser.pm
index 6e33c10..3954a5c 100755
--- a/lib/RT/EmailParser.pm
+++ b/lib/RT/EmailParser.pm
@@ -629,9 +629,6 @@ sub DESTROY {
 
 
 
-eval "require RT::EmailParser_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/EmailParser_Vendor.pm});
-eval "require RT::EmailParser_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/EmailParser_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Handle.pm b/lib/RT/Handle.pm
index ffdaec5..0d5cb3a 100755
--- a/lib/RT/Handle.pm
+++ b/lib/RT/Handle.pm
@@ -1060,9 +1060,6 @@ sub ACLEquivGroupId {
 
 __PACKAGE__->FinalizeDatabaseType;
 
-eval "require RT::Handle_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Handle_Vendor.pm});
-eval "require RT::Handle_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Handle_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/I18N.pm b/lib/RT/I18N.pm
index 5bd6f62..6dbda4a 100755
--- a/lib/RT/I18N.pm
+++ b/lib/RT/I18N.pm
@@ -572,10 +572,7 @@ sub SetMIMEHeadToEncoding {
 }
 # }}}
 
-eval "require RT::I18N_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N_Vendor.pm});
-eval "require RT::I18N_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;  # End of module.
 
diff --git a/lib/RT/I18N/i_default.pm b/lib/RT/I18N/i_default.pm
index 293f656..6ac7cf4 100755
--- a/lib/RT/I18N/i_default.pm
+++ b/lib/RT/I18N/i_default.pm
@@ -50,10 +50,7 @@ package RT::I18N::i_default;
 use base 'RT::I18N';
 use strict;
 
-eval "require RT::I18N::i_default_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N/i_default_Vendor.pm});
-eval "require RT::I18N::i_default_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N/i_default_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Installer.pm b/lib/RT/Installer.pm
index aa89140..26786e4 100644
--- a/lib/RT/Installer.pm
+++ b/lib/RT/Installer.pm
@@ -326,15 +326,7 @@ C<RT::Installer> class provides access to RT Installer Meta
 
 =cut
 
-eval "require RT::Installer_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Installer_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Installer_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Installer_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Interface/CLI.pm b/lib/RT/Interface/CLI.pm
index 2eb009a..2a97095 100755
--- a/lib/RT/Interface/CLI.pm
+++ b/lib/RT/Interface/CLI.pm
@@ -256,9 +256,6 @@ sub debug {
 # }}}
 
 
-eval "require RT::Interface::CLI_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/CLI_Vendor.pm});
-eval "require RT::Interface::CLI_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/CLI_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/Email.pm b/lib/RT/Interface/Email.pm
index b10405a..e8052b1 100755
--- a/lib/RT/Interface/Email.pm
+++ b/lib/RT/Interface/Email.pm
@@ -1808,9 +1808,6 @@ sub _RecordSendEmailFailure {
     }
 }
 
-eval "require RT::Interface::Email_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Email_Vendor.pm} );
-eval "require RT::Interface::Email_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Email_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/Email/Auth/GnuPG.pm b/lib/RT/Interface/Email/Auth/GnuPG.pm
index 0e0ed38..b9787c5 100644
--- a/lib/RT/Interface/Email/Auth/GnuPG.pm
+++ b/lib/RT/Interface/Email/Auth/GnuPG.pm
@@ -250,14 +250,7 @@ sub VerifyDecrypt {
     return $status, @res, @nested;
 }
 
-eval "require RT::Interface::Email::Auth::GnuPG_Vendor";
-die $@
-  if ( $@
-    && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/GnuPG_Vendor.pm} );
-eval "require RT::Interface::Email::Auth::GnuPG_Local";
-die $@
-  if ( $@
-    && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/GnuPG_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Interface/Email/Auth/MailFrom.pm b/lib/RT/Interface/Email/Auth/MailFrom.pm
index 56c0fe9..06b0b93 100755
--- a/lib/RT/Interface/Email/Auth/MailFrom.pm
+++ b/lib/RT/Interface/Email/Auth/MailFrom.pm
@@ -174,9 +174,6 @@ sub GetCurrentUser {
     return ( $CurrentUser, 1 );
 }
 
-eval "require RT::Interface::Email::Auth::MailFrom_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/MailFrom_Vendor.pm});
-eval "require RT::Interface::Email::Auth::MailFrom_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/MailFrom_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/Email/Filter/SpamAssassin.pm b/lib/RT/Interface/Email/Filter/SpamAssassin.pm
index d7f2e38..c6200b2 100755
--- a/lib/RT/Interface/Email/Filter/SpamAssassin.pm
+++ b/lib/RT/Interface/Email/Filter/SpamAssassin.pm
@@ -90,9 +90,6 @@ the floor; otherwise, it is passed on as normal.
 
 =cut
 
-eval "require RT::Interface::Email::Filter::SpamAssassin_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Filter/SpamAssassin_Vendor.pm});
-eval "require RT::Interface::Email::Filter::SpamAssassin_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Filter/SpamAssassin_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/REST.pm b/lib/RT/Interface/REST.pm
index 75606c6..a89416b 100755
--- a/lib/RT/Interface/REST.pm
+++ b/lib/RT/Interface/REST.pm
@@ -306,15 +306,7 @@ sub vsplit {
     return \@words;
 }
 
-eval "require RT::Interface::REST_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Interface/REST_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Interface::REST_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Interface/REST_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Interface/Web.pm b/lib/RT/Interface/Web.pm
index 7a76799..75c83dd 100755
--- a/lib/RT/Interface/Web.pm
+++ b/lib/RT/Interface/Web.pm
@@ -2125,9 +2125,6 @@ sub _parse_saved_search {
     return ( _load_container_object( $obj_type, $obj_id ), $search_id );
 }
 
-eval "require RT::Interface::Web_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Web_Vendor.pm} );
-eval "require RT::Interface::Web_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Web_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index a2d089a..13dd9bf 100755
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -51,9 +51,6 @@ package RT::Interface::Web::QueryBuilder;
 use strict;
 use warnings;
 
-eval "require RT::Interface::Web::QueryBuilder_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Web/QueryBuilder_Vendor.pm});
-eval "require RT::Interface::Web::QueryBuilder_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Web/QueryBuilder_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/Web/QueryBuilder/Tree.pm b/lib/RT/Interface/Web/QueryBuilder/Tree.pm
index 78d526b..9adde9e 100755
--- a/lib/RT/Interface/Web/QueryBuilder/Tree.pm
+++ b/lib/RT/Interface/Web/QueryBuilder/Tree.pm
@@ -285,9 +285,6 @@ sub ParseSQL {
     return @results;
 }
 
-eval "require RT::Interface::Web::QueryBuilder::Tree_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Web/QueryBuilder/Tree_Vendor.pm});
-eval "require RT::Interface::Web::QueryBuilder::Tree_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Web/QueryBuilder/Tree_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Plugin.pm b/lib/RT/Plugin.pm
index 58ad5b9..9f9e402 100644
--- a/lib/RT/Plugin.pm
+++ b/lib/RT/Plugin.pm
@@ -128,14 +128,6 @@ Returns the directory this plugin has installed its message catalogs into.
 
 sub PoDir { return $_[0]->Path('po') }
 
-eval "require RT::Plugin_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Plugin_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Plugin_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Plugin_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Record.pm b/lib/RT/Record.pm
index 0fffe4c..022767e 100755
--- a/lib/RT/Record.pm
+++ b/lib/RT/Record.pm
@@ -1979,9 +1979,6 @@ sub WikiBase {
     return RT->Config->Get('WebPath'). "/index.html?q=";
 }
 
-eval "require RT::Record_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Record_Vendor.pm});
-eval "require RT::Record_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Record_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Reminders.pm b/lib/RT/Reminders.pm
index c5f71d3..5d3d81c 100644
--- a/lib/RT/Reminders.pm
+++ b/lib/RT/Reminders.pm
@@ -155,15 +155,7 @@ sub Resolve {
                                    NewValue => $reminder->id);
 }
 
-    eval "require RT::Reminders_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Reminders_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Reminders_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Reminders_Local.pm}) {
-            die $@;
-        };
+    RT::Base->_ImportOverlays();
 
 
 1;
diff --git a/lib/RT/Report/Tickets.pm b/lib/RT/Report/Tickets.pm
index 4d8d193..ef1a7b1 100644
--- a/lib/RT/Report/Tickets.pm
+++ b/lib/RT/Report/Tickets.pm
@@ -324,14 +324,6 @@ sub AddEmptyRows {
     }
 }
 
-eval "require RT::Report::Tickets_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Report/Tickets_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Report::Tickets_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Report/Tickets_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Report/Tickets/Entry.pm b/lib/RT/Report/Tickets/Entry.pm
index 249dc89..fab2cd6 100644
--- a/lib/RT/Report/Tickets/Entry.pm
+++ b/lib/RT/Report/Tickets/Entry.pm
@@ -79,14 +79,6 @@ sub LabelValue {
     return $value;
 }
 
-eval "require RT::Report::Tickets::Entry_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Report/Tickets/Entry_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Report::Tickets::Entry_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Report/Tickets/Entry_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Rule.pm b/lib/RT/Rule.pm
index eab8a3a..e3b9cb7 100644
--- a/lib/RT/Rule.pm
+++ b/lib/RT/Rule.pm
@@ -113,14 +113,6 @@ sub RunScripAction {
 
 }
 
-eval "require RT::Rule_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Rule_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Rule_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Rule_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Ruleset.pm b/lib/RT/Ruleset.pm
index 9fe7472..0b441d6 100644
--- a/lib/RT/Ruleset.pm
+++ b/lib/RT/Ruleset.pm
@@ -81,14 +81,6 @@ sub Add {
     push @RULE_SETS, $class->new(\%args);
 }
 
-eval "require RT::Ruleset_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Ruleset_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Ruleset_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Ruleset_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/SQL.pm b/lib/RT/SQL.pm
index 799cf94..890aaa6 100644
--- a/lib/RT/SQL.pm
+++ b/lib/RT/SQL.pm
@@ -289,14 +289,6 @@ sub PossibleCustomFields {
 }
 
 
-eval "require RT::SQL_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/SQL_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::SQL_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/SQL_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/SavedSearch.pm b/lib/RT/SavedSearch.pm
index 19ed02a..a185eba 100644
--- a/lib/RT/SavedSearch.pm
+++ b/lib/RT/SavedSearch.pm
@@ -144,9 +144,6 @@ sub _PrivacyObjects {
     return ( $CurrentUser->UserObj, @{ $groups->ItemsArrayRef() } );
 }
 
-eval "require RT::SavedSearch_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SavedSearch_Vendor.pm});
-eval "require RT::SavedSearch_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SavedSearch_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/SavedSearches.pm b/lib/RT/SavedSearches.pm
index b69755f..bc0ee43 100644
--- a/lib/RT/SavedSearches.pm
+++ b/lib/RT/SavedSearches.pm
@@ -181,9 +181,6 @@ sub _GetObject {
     return RT::SavedSearch->new($self->CurrentUser)->_GetObject($privacy);
 }
 
-eval "require RT::SavedSearches_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SavedSearches_Vendor.pm});
-eval "require RT::SavedSearches_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SavedSearches_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Search.pm b/lib/RT/Search.pm
index 5db6d2f..52b102d 100755
--- a/lib/RT/Search.pm
+++ b/lib/RT/Search.pm
@@ -140,9 +140,6 @@ sub Prepare  {
 }
 # }}}
 
-eval "require RT::Search_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search_Vendor.pm});
-eval "require RT::Search_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Search/ActiveTicketsInQueue.pm b/lib/RT/Search/ActiveTicketsInQueue.pm
index 7a98344..d6204ec 100755
--- a/lib/RT/Search/ActiveTicketsInQueue.pm
+++ b/lib/RT/Search/ActiveTicketsInQueue.pm
@@ -90,9 +90,6 @@ sub Prepare  {
 }
 # }}}
 
-eval "require RT::Search::ActiveTicketsInQueue_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/ActiveTicketsInQueue_Vendor.pm});
-eval "require RT::Search::ActiveTicketsInQueue_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/ActiveTicketsInQueue_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Search/FromSQL.pm b/lib/RT/Search/FromSQL.pm
index 0d33ba8..d04f4ca 100644
--- a/lib/RT/Search/FromSQL.pm
+++ b/lib/RT/Search/FromSQL.pm
@@ -98,9 +98,6 @@ sub Prepare  {
 }
 # }}}
 
-eval "require RT::Search::FromSQL_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/FromSQL_Vendor.pm});
-eval "require RT::Search::FromSQL_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/FromSQL_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Search/Googleish.pm b/lib/RT/Search/Googleish.pm
index 80338b0..4235b1e 100644
--- a/lib/RT/Search/Googleish.pm
+++ b/lib/RT/Search/Googleish.pm
@@ -202,9 +202,6 @@ sub Prepare  {
 }
 # }}}
 
-eval "require RT::Search::Googleish_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/Googleish_Vendor.pm});
-eval "require RT::Search::Googleish_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/Googleish_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/SearchBuilder.pm b/lib/RT/SearchBuilder.pm
index 04b30c1..e69a914 100755
--- a/lib/RT/SearchBuilder.pm
+++ b/lib/RT/SearchBuilder.pm
@@ -345,9 +345,6 @@ sub _DoCount {
     return $self->SUPER::_DoCount(@_);
 }
 
-eval "require RT::SearchBuilder_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SearchBuilder_Vendor.pm});
-eval "require RT::SearchBuilder_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SearchBuilder_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/SharedSetting.pm b/lib/RT/SharedSetting.pm
index aaa9353..a225e6c 100644
--- a/lib/RT/SharedSetting.pm
+++ b/lib/RT/SharedSetting.pm
@@ -492,9 +492,6 @@ sub ObjectsForModifying {
     return grep { $self->CurrentUserCanModify($_) } $self->_PrivacyObjects;
 }
 
-eval "require RT::SharedSetting_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SharedSetting_Vendor.pm});
-eval "require RT::SharedSetting_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SharedSetting_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/System.pm b/lib/RT/System.pm
index f58eced..96324b5 100755
--- a/lib/RT/System.pm
+++ b/lib/RT/System.pm
@@ -191,9 +191,6 @@ sub SubjectTag {
     return grep !$seen{lc $_}++, values %$map;
 }
 
-eval "require RT::System_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/System_Vendor.pm});
-eval "require RT::System_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/System_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/URI.pm b/lib/RT/URI.pm
index 6895fc0..59e8df2 100755
--- a/lib/RT/URI.pm
+++ b/lib/RT/URI.pm
@@ -278,9 +278,6 @@ sub Resolver {
     return ($self->{'resolver'});
 }
 
-eval "require RT::URI_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI_Vendor.pm});
-eval "require RT::URI_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/URI/base.pm b/lib/RT/URI/base.pm
index 27aea98..8f50071 100755
--- a/lib/RT/URI/base.pm
+++ b/lib/RT/URI/base.pm
@@ -142,9 +142,6 @@ sub AsString {
     return $self->URI;
 }
 
-eval "require RT::URI::base_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/base_Vendor.pm});
-eval "require RT::URI::base_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/base_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/URI/fsck_com_rt.pm b/lib/RT/URI/fsck_com_rt.pm
index b5ac230..e0f8423 100755
--- a/lib/RT/URI/fsck_com_rt.pm
+++ b/lib/RT/URI/fsck_com_rt.pm
@@ -223,9 +223,6 @@ sub AsString {
     }
 }
 
-eval "require RT::URI::fsck_com_rt_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/fsck_com_rt_Vendor.pm});
-eval "require RT::URI::fsck_com_rt_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/fsck_com_rt_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Util.pm b/lib/RT/Util.pm
index 197ab49..7807151 100644
--- a/lib/RT/Util.pm
+++ b/lib/RT/Util.pm
@@ -112,14 +112,6 @@ sub _safe_run_child {
     return shift->();
 }
 
-eval "require RT::Util_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Util_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Util_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Util_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;

commit 6f1f2d41f8f9c3deb1b9f3d07b42a740b004ccfb
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 13:17:49 2010 -0400

    Remove ::Generic condition/action/search abstract base classes
    deprecated in an earlier release.

diff --git a/UPGRADING b/UPGRADING
index ef70c2a..c41fc7c 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -17,6 +17,16 @@ accidentally damage your database and lose data or worse.
 If you are using MySQL, please read the instructions in UPGRADING.mysql as
 well.
 
+
+
+*******
+
+UPGRADING FROM RT 3.8.x - Changes:
+
+The deprecated classes RT::Action::Generic, RT::Condition::Generic and RT::Search::Generic
+have been removed, but you shouldn't have been using them anyway. You should have been using 
+RT::Action, RT::Condition and RT::Search, respectively.
+
 *******
 UPGRADING FROM 3.8.8 and earlier - Changes:
 
diff --git a/lib/RT/Action/Generic.pm b/lib/RT/Action/Generic.pm
deleted file mode 100644
index 8d4ac81..0000000
--- a/lib/RT/Action/Generic.pm
+++ /dev/null
@@ -1,80 +0,0 @@
-# BEGIN BPS TAGGED BLOCK {{{
-# 
-# COPYRIGHT:
-# 
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-# 
-# (Except where explicitly superseded by other copyright notices)
-# 
-# 
-# LICENSE:
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-# 
-# 
-# CONTRIBUTION SUBMISSION POLICY:
-# 
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-# 
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-# 
-# END BPS TAGGED BLOCK }}}
-
-=head1 NAME
-
-  RT::Action::Generic - deprecated, see RT::Action
-
-=head1 SYNOPSIS
-
-  use RT::Action::Generic;
-
-=head1 DESCRIPTION
-
-This module is provided only for backwards compatibility.
-
-=head1 METHODS
-
-
-=cut
-
-use strict;
-use warnings;
-package RT::Action::Generic;
-use base 'RT::Action';
-
-eval "require RT::Action::Generic_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Generic_Vendor.pm});
-warn "RT::Action::Generic has become RT::Action. Please adjust your deprecated RT::Action::Generic_Vendor file at " . $INC{"RT/Action/Generic_Vendor.pm"} if !$@;
-
-eval "require RT::Action::Generic_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Generic_Local.pm});
-warn "RT::Action::Generic has become RT::Action. Please adjust your deprecated RT::Action::Generic_Local file at " . $INC{"RT/Action/Generic_Local.pm"} if !$@;
-
-1;
-
diff --git a/lib/RT/Condition/Generic.pm b/lib/RT/Condition/Generic.pm
deleted file mode 100644
index f86efa4..0000000
--- a/lib/RT/Condition/Generic.pm
+++ /dev/null
@@ -1,80 +0,0 @@
-# BEGIN BPS TAGGED BLOCK {{{
-# 
-# COPYRIGHT:
-# 
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-# 
-# (Except where explicitly superseded by other copyright notices)
-# 
-# 
-# LICENSE:
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-# 
-# 
-# CONTRIBUTION SUBMISSION POLICY:
-# 
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-# 
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-# 
-# END BPS TAGGED BLOCK }}}
-
-=head1 NAME
-
-  RT::Condition::Generic - deprecated, see RT::Condition
-
-=head1 SYNOPSIS
-
-  use RT::Condition::Generic;
-
-=head1 DESCRIPTION
-
-This module is provided only for backwards compatibility.
-
-=head1 METHODS
-
-
-=cut
-
-use strict;
-use warnings;
-package RT::Condition::Generic;
-use base 'RT::Condition';
-
-eval "require RT::Condition::Generic_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Generic_Vendor.pm});
-warn "RT::Condition::Generic has become RT::Condition. Please adjust your RT::Condition::Generic_Vendor file at " . $INC{"RT/Condition/Generic_Vendor.pm"} if !$@;
-
-eval "require RT::Condition::Generic_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Generic_Local.pm});
-warn "RT::Condition::Generic has become RT::Condition. Please adjust your RT::Condition::Generic_Local file at " . $INC{"RT/Condition/Generic_Local.pm"} if !$@;
-
-1;
-
diff --git a/lib/RT/Search/Generic.pm b/lib/RT/Search/Generic.pm
deleted file mode 100644
index 54a1da4..0000000
--- a/lib/RT/Search/Generic.pm
+++ /dev/null
@@ -1,80 +0,0 @@
-# BEGIN BPS TAGGED BLOCK {{{
-# 
-# COPYRIGHT:
-# 
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-# 
-# (Except where explicitly superseded by other copyright notices)
-# 
-# 
-# LICENSE:
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-# 
-# 
-# CONTRIBUTION SUBMISSION POLICY:
-# 
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-# 
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-# 
-# END BPS TAGGED BLOCK }}}
-
-=head1 NAME
-
-  RT::Search::Generic - deprecated, see RT::Search
-
-=head1 SYNOPSIS
-
-  use RT::Search::Generic;
-
-=head1 DESCRIPTION
-
-This module is provided only for backwards compatibility.
-
-=head1 METHODS
-
-
-=cut
-
-use strict;
-use warnings;
-package RT::Search::Generic;
-use base 'RT::Search';
-
-eval "require RT::Search::Generic_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/Generic_Vendor.pm});
-warn "RT::Search::Generic has become RT::Search. Please adjust your RT::Search::Generic_Vendor file at " . $INC{"RT/Search/Generic_Vendor.pm"} if !$@;
-
-eval "require RT::Search::Generic_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/Generic_Local.pm});
-warn "RT::Search::Generic has become RT::Search. Please adjust your RT::Search::Generic_Local file at " . $INC{"RT/Search/Generic_Local.pm"} if !$@;
-
-1;
-
diff --git a/t/00-compile.t b/t/00-compile.t
index 7257c3e..1a89e77 100644
--- a/t/00-compile.t
+++ b/t/00-compile.t
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 
-use RT::Test nodata => 1, tests => 34;
+use RT::Test nodata => 1, tests => 31;
 
 require_ok("RT");
 require_ok("RT::Test");
@@ -24,15 +24,12 @@ require_ok("RT::GroupMembers");
 require_ok("RT::ScripActions");
 require_ok("RT::Transactions");
 require_ok("RT::ScripCondition");
-require_ok("RT::Action::Generic");
+require_ok("RT::Action");
 require_ok("RT::ScripConditions");
-require_ok("RT::Search::Generic");
-require_ok("RT::Search::Generic");
-require_ok("RT::Search::Generic");
-require_ok("RT::Search::Generic");
+require_ok("RT::Search");
 require_ok("RT::Action::SendEmail");
 require_ok("RT::CachedGroupMembers");
-require_ok("RT::Condition::Generic");
+require_ok("RT::Condition");
 require_ok("RT::Interface::Web");
 require_ok("RT::SavedSearch");
 require_ok("RT::SavedSearches");

commit 72cc7aa553ffd690b8ff7bc401c7e4ab5595e9f6
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 13:40:52 2010 -0400

    Remove the overlay craziness from RT.pm.in

diff --git a/lib/RT.pm.in b/lib/RT.pm.in
index 4722e38..13a0cd5 100755
--- a/lib/RT.pm.in
+++ b/lib/RT.pm.in
@@ -701,9 +701,7 @@ L<DBIx::SearchBuilder>
 
 =cut
 
-eval "require RT_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT_Vendor.pm});
-eval "require RT_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT_Local.pm});
+require RT::Base;
+RT::Base->_ImportOverlays();
 
 1;

commit f379fb81cd5e8add32c2c39fa2cea7fa6a3c76c4
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 13:45:18 2010 -0400

    Move the prose description of the _Overlay mechanism to the styleguide.

diff --git a/lib/RT/ACE.pm b/lib/RT/ACE.pm
index 271405d..bb16030 100755
--- a/lib/RT/ACE.pm
+++ b/lib/RT/ACE.pm
@@ -288,24 +288,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ACE_Overlay, RT::ACE_Vendor, RT::ACE_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ACL.pm b/lib/RT/ACL.pm
index 0e14a0c..a250b0f 100755
--- a/lib/RT/ACL.pm
+++ b/lib/RT/ACL.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ACL_Overlay, RT::ACL_Vendor, RT::ACL_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Attachment.pm b/lib/RT/Attachment.pm
index 137830c..a8b908e 100755
--- a/lib/RT/Attachment.pm
+++ b/lib/RT/Attachment.pm
@@ -356,24 +356,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Attachment_Overlay, RT::Attachment_Vendor, RT::Attachment_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Attachments.pm b/lib/RT/Attachments.pm
index 733e02e..5cb7939 100755
--- a/lib/RT/Attachments.pm
+++ b/lib/RT/Attachments.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Attachments_Overlay, RT::Attachments_Vendor, RT::Attachments_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Attribute.pm b/lib/RT/Attribute.pm
index ab4d5ff..a8de8b6 100644
--- a/lib/RT/Attribute.pm
+++ b/lib/RT/Attribute.pm
@@ -309,24 +309,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Attribute_Overlay, RT::Attribute_Vendor, RT::Attribute_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Attributes.pm b/lib/RT/Attributes.pm
index 06c8b49..57833df 100644
--- a/lib/RT/Attributes.pm
+++ b/lib/RT/Attributes.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Attributes_Overlay, RT::Attributes_Vendor, RT::Attributes_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CachedGroupMember.pm b/lib/RT/CachedGroupMember.pm
index e708637..018458c 100755
--- a/lib/RT/CachedGroupMember.pm
+++ b/lib/RT/CachedGroupMember.pm
@@ -242,24 +242,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CachedGroupMember_Overlay, RT::CachedGroupMember_Vendor, RT::CachedGroupMember_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CachedGroupMembers.pm b/lib/RT/CachedGroupMembers.pm
index 4a02b4b..701da22 100755
--- a/lib/RT/CachedGroupMembers.pm
+++ b/lib/RT/CachedGroupMembers.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CachedGroupMembers_Overlay, RT::CachedGroupMembers_Vendor, RT::CachedGroupMembers_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CustomField.pm b/lib/RT/CustomField.pm
index 95f58b7..549388b 100755
--- a/lib/RT/CustomField.pm
+++ b/lib/RT/CustomField.pm
@@ -378,24 +378,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CustomField_Overlay, RT::CustomField_Vendor, RT::CustomField_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CustomFieldValue.pm b/lib/RT/CustomFieldValue.pm
index 0a1eb15..64d222f 100755
--- a/lib/RT/CustomFieldValue.pm
+++ b/lib/RT/CustomFieldValue.pm
@@ -278,24 +278,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CustomFieldValue_Overlay, RT::CustomFieldValue_Vendor, RT::CustomFieldValue_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CustomFieldValues.pm b/lib/RT/CustomFieldValues.pm
index e8464c7..921d444 100755
--- a/lib/RT/CustomFieldValues.pm
+++ b/lib/RT/CustomFieldValues.pm
@@ -115,24 +115,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CustomFieldValues_Overlay, RT::CustomFieldValues_Vendor, RT::CustomFieldValues_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CustomFields.pm b/lib/RT/CustomFields.pm
index 96027fb..1c3a854 100755
--- a/lib/RT/CustomFields.pm
+++ b/lib/RT/CustomFields.pm
@@ -115,24 +115,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CustomFields_Overlay, RT::CustomFields_Vendor, RT::CustomFields_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Group.pm b/lib/RT/Group.pm
index 8600861..a947c5b 100755
--- a/lib/RT/Group.pm
+++ b/lib/RT/Group.pm
@@ -242,24 +242,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Group_Overlay, RT::Group_Vendor, RT::Group_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/GroupMember.pm b/lib/RT/GroupMember.pm
index 6616f2f..161031e 100755
--- a/lib/RT/GroupMember.pm
+++ b/lib/RT/GroupMember.pm
@@ -173,24 +173,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::GroupMember_Overlay, RT::GroupMember_Vendor, RT::GroupMember_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/GroupMembers.pm b/lib/RT/GroupMembers.pm
index 282e2a6..0b0e329 100755
--- a/lib/RT/GroupMembers.pm
+++ b/lib/RT/GroupMembers.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::GroupMembers_Overlay, RT::GroupMembers_Vendor, RT::GroupMembers_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Groups.pm b/lib/RT/Groups.pm
index 86f803d..84a6819 100755
--- a/lib/RT/Groups.pm
+++ b/lib/RT/Groups.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Groups_Overlay, RT::Groups_Vendor, RT::Groups_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Link.pm b/lib/RT/Link.pm
index 6eb8c98..4eb95a8 100755
--- a/lib/RT/Link.pm
+++ b/lib/RT/Link.pm
@@ -286,24 +286,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Link_Overlay, RT::Link_Vendor, RT::Link_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Links.pm b/lib/RT/Links.pm
index 06f64e1..41ed1b8 100755
--- a/lib/RT/Links.pm
+++ b/lib/RT/Links.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Links_Overlay, RT::Links_Vendor, RT::Links_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ObjectCustomField.pm b/lib/RT/ObjectCustomField.pm
index 353fd56..9cf915e 100644
--- a/lib/RT/ObjectCustomField.pm
+++ b/lib/RT/ObjectCustomField.pm
@@ -255,24 +255,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ObjectCustomField_Overlay, RT::ObjectCustomField_Vendor, RT::ObjectCustomField_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ObjectCustomFieldValue.pm b/lib/RT/ObjectCustomFieldValue.pm
index c8b2fbd..c0a7a3b 100644
--- a/lib/RT/ObjectCustomFieldValue.pm
+++ b/lib/RT/ObjectCustomFieldValue.pm
@@ -393,24 +393,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ObjectCustomFieldValue_Overlay, RT::ObjectCustomFieldValue_Vendor, RT::ObjectCustomFieldValue_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ObjectCustomFieldValues.pm b/lib/RT/ObjectCustomFieldValues.pm
index d7f8764..0b3aaae 100644
--- a/lib/RT/ObjectCustomFieldValues.pm
+++ b/lib/RT/ObjectCustomFieldValues.pm
@@ -112,24 +112,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ObjectCustomFieldValues_Overlay, RT::ObjectCustomFieldValues_Vendor, RT::ObjectCustomFieldValues_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ObjectCustomFields.pm b/lib/RT/ObjectCustomFields.pm
index e0803da..5fb3b29 100644
--- a/lib/RT/ObjectCustomFields.pm
+++ b/lib/RT/ObjectCustomFields.pm
@@ -112,24 +112,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ObjectCustomFields_Overlay, RT::ObjectCustomFields_Vendor, RT::ObjectCustomFields_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Principal.pm b/lib/RT/Principal.pm
index f7b3b27..601ac74 100755
--- a/lib/RT/Principal.pm
+++ b/lib/RT/Principal.pm
@@ -196,24 +196,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Principal_Overlay, RT::Principal_Vendor, RT::Principal_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Principals.pm b/lib/RT/Principals.pm
index 18768eb..665fa49 100755
--- a/lib/RT/Principals.pm
+++ b/lib/RT/Principals.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Principals_Overlay, RT::Principals_Vendor, RT::Principals_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Queue.pm b/lib/RT/Queue.pm
index 15b7a65..140fe18 100755
--- a/lib/RT/Queue.pm
+++ b/lib/RT/Queue.pm
@@ -355,24 +355,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Queue_Overlay, RT::Queue_Vendor, RT::Queue_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Queues.pm b/lib/RT/Queues.pm
index 5b56fa6..bb6cb87 100755
--- a/lib/RT/Queues.pm
+++ b/lib/RT/Queues.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Queues_Overlay, RT::Queues_Vendor, RT::Queues_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Scrip.pm b/lib/RT/Scrip.pm
index fad74c0..a2d0b8f 100755
--- a/lib/RT/Scrip.pm
+++ b/lib/RT/Scrip.pm
@@ -484,24 +484,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Scrip_Overlay, RT::Scrip_Vendor, RT::Scrip_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ScripAction.pm b/lib/RT/ScripAction.pm
index 70956ad..179ed37 100755
--- a/lib/RT/ScripAction.pm
+++ b/lib/RT/ScripAction.pm
@@ -263,24 +263,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ScripAction_Overlay, RT::ScripAction_Vendor, RT::ScripAction_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ScripActions.pm b/lib/RT/ScripActions.pm
index 900b9c2..182dfa3 100755
--- a/lib/RT/ScripActions.pm
+++ b/lib/RT/ScripActions.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ScripActions_Overlay, RT::ScripActions_Vendor, RT::ScripActions_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ScripCondition.pm b/lib/RT/ScripCondition.pm
index f607cc6..58b0761 100755
--- a/lib/RT/ScripCondition.pm
+++ b/lib/RT/ScripCondition.pm
@@ -286,24 +286,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ScripCondition_Overlay, RT::ScripCondition_Vendor, RT::ScripCondition_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ScripConditions.pm b/lib/RT/ScripConditions.pm
index 1cd6551..99ef86f 100755
--- a/lib/RT/ScripConditions.pm
+++ b/lib/RT/ScripConditions.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ScripConditions_Overlay, RT::ScripConditions_Vendor, RT::ScripConditions_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Scrips.pm b/lib/RT/Scrips.pm
index 54fa5e9..d4c99f7 100755
--- a/lib/RT/Scrips.pm
+++ b/lib/RT/Scrips.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Scrips_Overlay, RT::Scrips_Vendor, RT::Scrips_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/StyleGuide.pod b/lib/RT/StyleGuide.pod
index 84ccb89..6ea8cc1 100755
--- a/lib/RT/StyleGuide.pod
+++ b/lib/RT/StyleGuide.pod
@@ -892,6 +892,22 @@ There are some legacy fields that did not follow this rule, namely
 C<ACL.PrincipalId>, C<GroupMembers.GroupId> and C<Attachments.TransactionId>,
 but new tables are expected to be consistent.
 
+
+=head1 EXTENDING RT CLASSES
+
+=head2 The Overlay mechansim
+
+RT's classes allow "overlay" methods to be placed into files named Filename_Vendor.pm and Filename_Local.pm
+_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
+
+These overlay files can contain new subs or subs to replace existing subs in this module.
+
+Each of these files should begin with the line 
+
+   no warnings qw(redefine);
+
+so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
+
 =head1 TO DO
 
 Talk about DBIx::SearchBuilder
diff --git a/lib/RT/Template.pm b/lib/RT/Template.pm
index 026f765..1a283b5 100755
--- a/lib/RT/Template.pm
+++ b/lib/RT/Template.pm
@@ -347,24 +347,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Template_Overlay, RT::Template_Vendor, RT::Template_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Templates.pm b/lib/RT/Templates.pm
index bc358f7..7b40b62 100755
--- a/lib/RT/Templates.pm
+++ b/lib/RT/Templates.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Templates_Overlay, RT::Templates_Vendor, RT::Templates_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Ticket.pm b/lib/RT/Ticket.pm
index 9e9cfda..e21e504 100755
--- a/lib/RT/Ticket.pm
+++ b/lib/RT/Ticket.pm
@@ -646,24 +646,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Ticket_Overlay, RT::Ticket_Vendor, RT::Ticket_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Tickets.pm b/lib/RT/Tickets.pm
index d98c95c..6b5e92b 100755
--- a/lib/RT/Tickets.pm
+++ b/lib/RT/Tickets.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Tickets_Overlay, RT::Tickets_Vendor, RT::Tickets_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Transaction.pm b/lib/RT/Transaction.pm
index e9ae434..93cff2f 100755
--- a/lib/RT/Transaction.pm
+++ b/lib/RT/Transaction.pm
@@ -402,24 +402,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Transaction_Overlay, RT::Transaction_Vendor, RT::Transaction_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Transactions.pm b/lib/RT/Transactions.pm
index 444ce53..dc0a2d1 100755
--- a/lib/RT/Transactions.pm
+++ b/lib/RT/Transactions.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Transactions_Overlay, RT::Transactions_Vendor, RT::Transactions_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/User.pm b/lib/RT/User.pm
index c359595..53729b5 100755
--- a/lib/RT/User.pm
+++ b/lib/RT/User.pm
@@ -838,24 +838,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::User_Overlay, RT::User_Vendor, RT::User_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Users.pm b/lib/RT/Users.pm
index 025767f..a4c3f66 100755
--- a/lib/RT/Users.pm
+++ b/lib/RT/Users.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Users_Overlay, RT::Users_Vendor, RT::Users_Local
-
-=cut
-
-
 1;
diff --git a/sbin/factory b/sbin/factory
index 4d19757..c475632 100755
--- a/sbin/factory
+++ b/sbin/factory
@@ -483,26 +483,6 @@ sub MagicImport {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows \"overlay\" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-@{[$class]}_Overlay, @{[$class]}_Vendor, @{[$class]}_Local
-
-=cut
-
-
 1;
 ";
 

-----------------------------------------------------------------------


More information about the Rt-commit mailing list