This is an automated email from the ASF dual-hosted git repository.

swebb2066 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git


The following commit(s) were added to refs/heads/master by this push:
     new a9b98f34 Simplify the rolling Action and RollingPolicy interfaces in 
the next ABI version (#676)
a9b98f34 is described below

commit a9b98f347f2e2f4dbbc40aed55adbcd2de5a68d8
Author: Stephen Webb <[email protected]>
AuthorDate: Sun May 17 11:32:05 2026 +1000

    Simplify the rolling Action and RollingPolicy interfaces in the next ABI 
version (#676)
---
 src/main/cpp/action.cpp                            | 41 ++++++++++++++++------
 src/main/cpp/filerenameaction.cpp                  | 25 ++++++++++---
 src/main/cpp/fixedwindowrollingpolicy.cpp          | 36 +++++++++----------
 src/main/cpp/gzcompressaction.cpp                  | 21 +++++++----
 src/main/cpp/multiprocessrollingfileappender.cpp   | 11 +++---
 src/main/cpp/rollingfileappender.cpp               | 20 +++++------
 src/main/cpp/rollingpolicy.cpp                     | 21 +++++++++++
 src/main/cpp/rollingpolicybase.cpp                 | 13 +++++--
 src/main/cpp/timebasedrollingpolicy.cpp            | 18 ++++------
 src/main/cpp/zipcompressaction.cpp                 | 24 ++++++++-----
 src/main/include/log4cxx/private/action_priv.h     | 19 +++++-----
 src/main/include/log4cxx/rolling/action.h          | 38 ++++++++++++++++----
 .../include/log4cxx/rolling/filerenameaction.h     |  7 ++--
 .../log4cxx/rolling/fixedwindowrollingpolicy.h     | 18 +++++-----
 .../include/log4cxx/rolling/gzcompressaction.h     |  7 ++--
 src/main/include/log4cxx/rolling/rollingpolicy.h   | 36 ++++++++++++++++---
 .../include/log4cxx/rolling/rollingpolicybase.h    |  9 +++--
 .../log4cxx/rolling/timebasedrollingpolicy.h       | 12 +++----
 .../include/log4cxx/rolling/zipcompressaction.h    |  7 ++--
 src/site/doxy/Doxyfile.in                          |  3 ++
 20 files changed, 253 insertions(+), 133 deletions(-)

diff --git a/src/main/cpp/action.cpp b/src/main/cpp/action.cpp
index ccc31d4a..8a8933a0 100644
--- a/src/main/cpp/action.cpp
+++ b/src/main/cpp/action.cpp
@@ -17,8 +17,8 @@
 #include <log4cxx/logstring.h>
 #include <log4cxx/rolling/action.h>
 #include <log4cxx/private/action_priv.h>
+#include <log4cxx/helpers/loglog.h>
 #include <mutex>
-#include <memory>
 
 using namespace LOG4CXX_NS;
 using namespace LOG4CXX_NS::rolling;
@@ -38,26 +38,23 @@ Action::~Action()
 {
 }
 
-/**
- * {@inheritDoc}
- */
-void Action::run(LOG4CXX_NS::helpers::Pool& pool1)
+void Action::run()
 {
        std::lock_guard<std::mutex> lock(m_priv->mutex);
 
-       if (!m_priv->interrupted)
+       if (!m_priv->closed)
        {
                try
                {
-                       execute(pool1);
+                       execute();
                }
                catch (std::exception& ex)
                {
-                       reportException(ex);
+                       helpers::LogLog::error(getName() + LOG4CXX_STR(" raised 
the following exception"), ex);
                }
 
                m_priv->complete = true;
-               m_priv->interrupted = true;
+               m_priv->closed = true;
        }
 }
 
@@ -67,7 +64,7 @@ void Action::run(LOG4CXX_NS::helpers::Pool& pool1)
 void Action::close()
 {
        std::lock_guard<std::mutex> lock(m_priv->mutex);
-       m_priv->interrupted = true;
+       m_priv->closed = true;
 }
 
 /**
@@ -79,6 +76,18 @@ bool Action::isComplete() const
        return m_priv->complete;
 }
 
+LogString Action::getName() const
+{
+       return m_priv->actionName;
+}
+
+#if LOG4CXX_ABI_VERSION <= 15
+bool Action::execute() const
+{
+       helpers::Pool p;
+       return execute(p);
+}
+
 /**
  * Capture exception.
  *
@@ -87,3 +96,15 @@ bool Action::isComplete() const
 void Action::reportException(const std::exception& /* ex */)
 {
 }
+
+void Action::run(helpers::Pool&)
+{
+       run();
+}
+#else
+bool Action::execute(helpers::Pool&) const
+{
+       return execute();
+}
+
+#endif
diff --git a/src/main/cpp/filerenameaction.cpp 
b/src/main/cpp/filerenameaction.cpp
index 302e6565..3e407617 100644
--- a/src/main/cpp/filerenameaction.cpp
+++ b/src/main/cpp/filerenameaction.cpp
@@ -27,10 +27,16 @@ using namespace LOG4CXX_NS::helpers;
 
 struct FileRenameAction::FileRenameActionPrivate : public ActionPrivate
 {
-       FileRenameActionPrivate( const File& toRename,
-               const File& renameTo,
-               bool renameEmptyFile1):
-               source(toRename), destination(renameTo), 
renameEmptyFile(renameEmptyFile1) {}
+       FileRenameActionPrivate
+               ( const File& toRename
+               , const File& renameTo
+               , bool        renameEmptyFile1
+               )
+               : ActionPrivate{ LOG4CXX_STR("Rename") }
+               , source(toRename)
+               , destination(renameTo)
+               , renameEmptyFile(renameEmptyFile1)
+               {}
 
        const File source;
        const File destination;
@@ -46,7 +52,18 @@ FileRenameAction::FileRenameAction(const File& toRename,
 {
 }
 
+#if LOG4CXX_ABI_VERSION <= 15
 bool FileRenameAction::execute(Pool&) const
 {
+       if (!priv->renameEmptyFile && 0 == priv->source.length())
+               return false;
        return priv->source.renameTo(priv->destination);
 }
+#else
+bool FileRenameAction::execute()const
+{
+       if (priv->renameEmptyFile || 0 != priv->source.length())
+               return priv->source.renameTo(priv->destination);
+       return false;
+}
+#endif
diff --git a/src/main/cpp/fixedwindowrollingpolicy.cpp 
b/src/main/cpp/fixedwindowrollingpolicy.cpp
index 4f8a442f..358dee29 100644
--- a/src/main/cpp/fixedwindowrollingpolicy.cpp
+++ b/src/main/cpp/fixedwindowrollingpolicy.cpp
@@ -127,10 +127,7 @@ void FixedWindowRollingPolicy::activateOptions( 
LOG4CXX_ACTIVATE_OPTIONS_FORMAL_
 /**
  * {@inheritDoc}
  */
-RolloverDescriptionPtr FixedWindowRollingPolicy::initialize(
-       const   LogString&  currentActiveFile,
-       const   bool        append,
-       Pool&       pool)
+RolloverDescriptionPtr FixedWindowRollingPolicy::initialize( 
LOG4CXX_ROLLING_POLICY_INITIALIZE_FORMAL_PARAMETERS )
 {
        LogString newActiveFile(currentActiveFile);
        priv->explicitActiveFile = false;
@@ -145,7 +142,7 @@ RolloverDescriptionPtr FixedWindowRollingPolicy::initialize(
        {
                LogString buf;
                ObjectPtr obj = std::make_shared<Integer>(priv->minIndex);
-               formatFileName(obj, buf, pool);
+               formatFileName(obj, buf);
                newActiveFile = buf;
        }
 
@@ -157,10 +154,7 @@ RolloverDescriptionPtr 
FixedWindowRollingPolicy::initialize(
 /**
  * {@inheritDoc}
  */
-RolloverDescriptionPtr FixedWindowRollingPolicy::rollover(
-       const   LogString&  currentActiveFile,
-       const   bool        append,
-       Pool&       pool)
+RolloverDescriptionPtr FixedWindowRollingPolicy::rollover( 
LOG4CXX_ROLLING_POLICY_ROLLOVER_FORMAL_PARAMETERS )
 {
        RolloverDescriptionPtr desc;
 
@@ -176,14 +170,14 @@ RolloverDescriptionPtr FixedWindowRollingPolicy::rollover(
                purgeStart++;
        }
 
-       if (!purge(purgeStart, priv->maxIndex, pool))
+       if (!purge(purgeStart, priv->maxIndex))
        {
                return desc;
        }
 
        LogString buf;
        ObjectPtr obj = std::make_shared<Integer>(purgeStart);
-       formatFileName(obj, buf, pool);
+       formatFileName(obj, buf);
 
        LogString renameTo(buf);
        LogString compressedName(renameTo);
@@ -254,14 +248,14 @@ int FixedWindowRollingPolicy::getMinIndex() const
  * index will be deleted if needed.
  * @return true if purge was successful and rollover should be attempted.
  */
-bool FixedWindowRollingPolicy::purge(int lowIndex, int highIndex, Pool& p) 
const
+bool FixedWindowRollingPolicy::purge(int lowIndex, int highIndex) const
 {
        int suffixLength = 0;
 
        std::vector<FileRenameActionPtr> renames;
        LogString buf;
        ObjectPtr obj = std::make_shared<Integer>(lowIndex);
-       formatFileName(obj, buf, p);
+       formatFileName(obj, buf);
 
        LogString lowFilename(buf);
 
@@ -322,7 +316,7 @@ bool FixedWindowRollingPolicy::purge(int lowIndex, int 
highIndex, Pool& p) const
                        //     add a rename action to the list
                        buf.erase(buf.begin(), buf.end());
                        obj = std::make_shared<Integer>(i + 1);
-                       formatFileName(obj, buf, p);
+                       formatFileName(obj, buf);
 
                        LogString highFilename(buf);
                        LogString renameTo(highFilename);
@@ -349,17 +343,17 @@ bool FixedWindowRollingPolicy::purge(int lowIndex, int 
highIndex, Pool& p) const
                iter != renames.rend();
                iter++)
        {
-
+               auto& action = *iter;
                try
                {
-                       if (!(*iter)->execute(p))
+                       if (!action->execute())
                        {
                                return false;
                        }
                }
-               catch (std::exception&)
+               catch (const std::exception& ex)
                {
-                       LogLog::warn(LOG4CXX_STR("Exception during purge in 
RollingFileAppender"));
+                       LogLog::warn(action->getName() + LOG4CXX_STR(" raised 
the following exception"), ex);
 
                        return false;
                }
@@ -367,6 +361,12 @@ bool FixedWindowRollingPolicy::purge(int lowIndex, int 
highIndex, Pool& p) const
 
        return true;
 }
+#if LOG4CXX_ABI_VERSION <= 15
+bool FixedWindowRollingPolicy::purge(int lowIndex, int highIndex, 
helpers::Pool& pool) const
+{
+       return purge(lowIndex, highIndex);
+}
+#endif
 
 #define RULES_PUT(spec, cls) \
        specs.insert(PatternMap::value_type(LogString(LOG4CXX_STR(spec)), 
(PatternConstructor) cls ::newInstance))
diff --git a/src/main/cpp/gzcompressaction.cpp 
b/src/main/cpp/gzcompressaction.cpp
index 41487b17..83e51025 100644
--- a/src/main/cpp/gzcompressaction.cpp
+++ b/src/main/cpp/gzcompressaction.cpp
@@ -31,10 +31,16 @@ using namespace LOG4CXX_NS::helpers;
 
 struct GZCompressAction::GZCompressActionPrivate : public ActionPrivate
 {
-       GZCompressActionPrivate( const File& toRename,
-               const File& renameTo,
-               bool deleteSource):
-               source(toRename), destination(renameTo), 
deleteSource(deleteSource) {}
+       GZCompressActionPrivate
+               ( const File& toRename
+               , const File& renameTo
+               , bool deleteSource
+               )
+               : ActionPrivate{ LOG4CXX_STR("gzip") }
+               , source(toRename)
+               , destination(renameTo)
+               , deleteSource(deleteSource)
+               {}
 
        const File source;
        File destination;
@@ -54,11 +60,12 @@ GZCompressAction::GZCompressAction(const File& src,
 
 GZCompressAction::~GZCompressAction() {}
 
-bool GZCompressAction::execute(LOG4CXX_NS::helpers::Pool& p) const
+bool GZCompressAction::execute( LOG4CXX_EXECUTE_ACTION_FORMAL_PARAMETERS ) 
const
 {
        if (priv->source.exists())
        {
-               apr_pool_t* aprpool = p.getAPRPool();
+               helpers::Pool tempPool;
+               apr_pool_t* aprpool = tempPool.getAPRPool();
                apr_procattr_t* attr;
                apr_status_t stat = apr_procattr_create(&attr, aprpool);
 
@@ -124,7 +131,7 @@ bool GZCompressAction::execute(LOG4CXX_NS::helpers::Pool& 
p) const
                int i = 0;
                args[i++] = "gzip";
                args[i++] = "-c";
-               args[i++] = Transcoder::encode(priv->source.getPath(), p);
+               args[i++] = Transcoder::encode(priv->source.getPath(), 
tempPool);
                args[i++] = NULL;
 
                apr_proc_t pid;
diff --git a/src/main/cpp/multiprocessrollingfileappender.cpp 
b/src/main/cpp/multiprocessrollingfileappender.cpp
index b898a0be..2e54e169 100644
--- a/src/main/cpp/multiprocessrollingfileappender.cpp
+++ b/src/main/cpp/multiprocessrollingfileappender.cpp
@@ -281,14 +281,14 @@ bool 
MultiprocessRollingFileAppender::synchronizedRollover(const TriggeringPolic
                        reopenFile(fileName);
                else if (trigger && !trigger->isTriggeringEvent(this, 
_priv->_event, fileName, _priv->fileLength))
                        ;
-               else if (auto rollover1 = 
_priv->rollingPolicy->rollover(fileName, getAppend(), tempPool))
+               else if (auto rollover1 = 
_priv->rollingPolicy->rollover(fileName, getAppend()))
                {
                        _priv->close();
                        if (rollover1->getActiveFileName() == fileName)
                        {
                                bool success = true; // A synchronous action is 
not required
                                if (auto pAction = rollover1->getSynchronous())
-                                       success = pAction->execute(tempPool);
+                                       success = pAction->execute();
 
                                bool appendToExisting = true;
                                if (success)
@@ -307,7 +307,7 @@ bool 
MultiprocessRollingFileAppender::synchronizedRollover(const TriggeringPolic
                                        {
                                                try
                                                {
-                                                       
asyncAction->execute(tempPool);
+                                                       asyncAction->execute();
                                                }
                                                catch (std::exception& ex)
                                                {
@@ -337,10 +337,9 @@ bool 
MultiprocessRollingFileAppender::synchronizedRollover(const TriggeringPolic
                                        , rollover1->getAppend()
                                        );
                                _priv->setWriter(createWriter(os));
-                               helpers::Pool tempPool;
                                bool success = true; // A synchronous action is 
not required
                                if (auto pAction = rollover1->getSynchronous())
-                                       success = pAction->execute(tempPool);
+                                       success = pAction->execute();
 
                                if (success)
                                {
@@ -357,7 +356,7 @@ bool 
MultiprocessRollingFileAppender::synchronizedRollover(const TriggeringPolic
                                        {
                                                try
                                                {
-                                                       
asyncAction->execute(tempPool);
+                                                       asyncAction->execute();
                                                }
                                                catch (std::exception& ex)
                                                {
diff --git a/src/main/cpp/rollingfileappender.cpp 
b/src/main/cpp/rollingfileappender.cpp
index a607037f..c59dd793 100644
--- a/src/main/cpp/rollingfileappender.cpp
+++ b/src/main/cpp/rollingfileappender.cpp
@@ -219,12 +219,11 @@ bool 
RollingFileAppender::RollingFileAppenderPriv::activateOptions()
                std::lock_guard<std::recursive_mutex> lock(this->mutex);
                this->triggeringPolicy->activateOptions();
                this->rollingPolicy->activateOptions();
-               Pool p;
 
                try
                {
                        RolloverDescriptionPtr rollover1 =
-                               this->rollingPolicy->initialize(this->fileName, 
this->fileAppend, p);
+                               this->rollingPolicy->initialize(this->fileName, 
this->fileAppend);
 
                        if (rollover1 != NULL)
                        {
@@ -232,7 +231,7 @@ bool 
RollingFileAppender::RollingFileAppenderPriv::activateOptions()
 
                                if (syncAction != NULL)
                                {
-                                       syncAction->execute(p);
+                                       syncAction->execute();
                                }
 
                                this->fileName = rollover1->getActiveFileName();
@@ -245,7 +244,7 @@ bool 
RollingFileAppender::RollingFileAppenderPriv::activateOptions()
 
                                if (asyncAction != NULL)
                                {
-                                       asyncAction->execute(p);
+                                       asyncAction->execute();
                                }
                        }
 
@@ -292,7 +291,7 @@ bool RollingFileAppender::rollover()
        return rolloverInternal();
 }
 #if LOG4CXX_ABI_VERSION <= 15
-bool RollingFileAppender::rollover(Pool& p)
+bool RollingFileAppender::rollover(Pool& )
 {
        return rollover();
 }
@@ -308,8 +307,7 @@ bool RollingFileAppender::rolloverInternal()
                {
                                try
                                {
-                                       Pool p;
-                                       RolloverDescriptionPtr 
rollover1(_priv->rollingPolicy->rollover(this->getFile(), this->getAppend(), 
p));
+                                       RolloverDescriptionPtr 
rollover1(_priv->rollingPolicy->rollover(this->getFile(), this->getAppend()));
 
                                        if (rollover1 != NULL)
                                        {
@@ -325,7 +323,7 @@ bool RollingFileAppender::rolloverInternal()
 
                                                                try
                                                                {
-                                                                       success 
= rollover1->getSynchronous()->execute(p);
+                                                                       success 
= rollover1->getSynchronous()->execute();
                                                                }
                                                                catch 
(std::exception& ex)
                                                                {
@@ -355,7 +353,7 @@ bool RollingFileAppender::rolloverInternal()
                                                                {
                                                                        try
                                                                        {
-                                                                               
asyncAction->execute(p);
+                                                                               
asyncAction->execute();
                                                                        }
                                                                        catch 
(std::exception& ex)
                                                                        {
@@ -388,7 +386,7 @@ bool RollingFileAppender::rolloverInternal()
 
                                                                try
                                                                {
-                                                                       success 
= rollover1->getSynchronous()->execute(p);
+                                                                       success 
= rollover1->getSynchronous()->execute();
                                                                }
                                                                catch 
(std::exception& ex)
                                                                {
@@ -414,7 +412,7 @@ bool RollingFileAppender::rolloverInternal()
 
                                                                if (asyncAction 
!= NULL)
                                                                {
-                                                                       
asyncAction->execute(p);
+                                                                       
asyncAction->execute();
                                                                }
                                                        }
 
diff --git a/src/main/cpp/rollingpolicy.cpp b/src/main/cpp/rollingpolicy.cpp
index fdc8fe94..4842e1e7 100644
--- a/src/main/cpp/rollingpolicy.cpp
+++ b/src/main/cpp/rollingpolicy.cpp
@@ -22,3 +22,24 @@ using namespace LOG4CXX_NS::rolling;
 
 IMPLEMENT_LOG4CXX_OBJECT(RollingPolicy)
 
+#if LOG4CXX_ABI_VERSION <= 15
+RolloverDescriptionPtr RollingPolicy::initialize(const LogString& 
currentActiveFile, bool append)
+{
+       helpers::Pool p;
+       return initialize(currentActiveFile, append, p);
+}
+RolloverDescriptionPtr RollingPolicy::rollover(const LogString& 
currentActiveFile, bool append)
+{
+       helpers::Pool p;
+       return rollover(currentActiveFile, append, p);
+}
+#else
+RolloverDescriptionPtr RollingPolicy::initialize(const LogString& 
currentActiveFile, bool append, helpers::Pool&)
+{
+       return initialize(currentActiveFile, append);
+}
+RolloverDescriptionPtr RollingPolicy::rollover(const LogString& 
currentActiveFile, bool append, helpers::Pool&)
+{
+       return rollover(currentActiveFile, append);
+}
+#endif
diff --git a/src/main/cpp/rollingpolicybase.cpp 
b/src/main/cpp/rollingpolicybase.cpp
index eefb17cb..61897519 100644
--- a/src/main/cpp/rollingpolicybase.cpp
+++ b/src/main/cpp/rollingpolicybase.cpp
@@ -116,8 +116,7 @@ void 
RollingPolicyBase::RollingPolicyBasePrivate::parseFileNamePattern(const pat
  */
 void RollingPolicyBase::formatFileName(
        const ObjectPtr& obj,
-       LogString& toAppendTo,
-       Pool& pool) const
+       LogString& toAppendTo) const
 {
        for (auto item : m_priv->patternConverters)
        {
@@ -126,7 +125,15 @@ void RollingPolicyBase::formatFileName(
                item->getFormattingInfo().format((int)startField, toAppendTo);
        }
 }
-
+#if LOG4CXX_ABI_VERSION <= 15
+void RollingPolicyBase::formatFileName(
+       const ObjectPtr& obj,
+       LogString& toAppendTo,
+       Pool& pool) const
+{
+       formatFileName(obj, toAppendTo);
+}
+#endif
 
 PatternConverterPtr RollingPolicyBase::getIntegerPatternConverter() const
 {
diff --git a/src/main/cpp/timebasedrollingpolicy.cpp 
b/src/main/cpp/timebasedrollingpolicy.cpp
index 4ea8b22f..eaef45ca 100644
--- a/src/main/cpp/timebasedrollingpolicy.cpp
+++ b/src/main/cpp/timebasedrollingpolicy.cpp
@@ -315,7 +315,7 @@ void TimeBasedRollingPolicy::activateOptions( 
LOG4CXX_ACTIVATE_OPTIONS_FORMAL_PA
        Pool pool;
        LogString buf;
        ObjectPtr obj = std::make_shared<Date>();
-       formatFileName(obj, buf, pool);
+       formatFileName(obj, buf);
        m_priv->lastFileName = buf;
 
        m_priv->suffixLength = 0;
@@ -348,10 +348,7 @@ LOG4CXX_NS::pattern::PatternMap 
TimeBasedRollingPolicy::getFormatSpecifiers() co
 /**
  * {@inheritDoc}
  */
-RolloverDescriptionPtr TimeBasedRollingPolicy::initialize(
-       const   LogString&  currentActiveFile,
-       const   bool        append,
-       Pool&       pool)
+RolloverDescriptionPtr TimeBasedRollingPolicy::initialize( 
LOG4CXX_ROLLING_POLICY_INITIALIZE_FORMAL_PARAMETERS )
 {
        Date now;
        log4cxx_time_t n = now.getTime();
@@ -361,7 +358,7 @@ RolloverDescriptionPtr TimeBasedRollingPolicy::initialize(
 
        LogString buf;
        ObjectPtr obj = std::make_shared<Date>(currentFile.exists() ? 
currentFile.lastModified() : n);
-       formatFileName(obj, buf, pool);
+       formatFileName(obj, buf);
        m_priv->lastFileName = buf;
 
        ActionPtr noAction;
@@ -380,10 +377,7 @@ RolloverDescriptionPtr TimeBasedRollingPolicy::initialize(
        }
 }
 
-RolloverDescriptionPtr TimeBasedRollingPolicy::rollover(
-       const   LogString&  currentActiveFile,
-       const   bool        append,
-       Pool&       pool)
+RolloverDescriptionPtr TimeBasedRollingPolicy::rollover( 
LOG4CXX_ROLLING_POLICY_ROLLOVER_FORMAL_PARAMETERS )
 {
        Date now;
        log4cxx_time_t n = now.getTime();
@@ -391,7 +385,7 @@ RolloverDescriptionPtr TimeBasedRollingPolicy::rollover(
 
        LogString buf;
        ObjectPtr obj = std::make_shared<Date>(n);
-       formatFileName(obj, buf, pool);
+       formatFileName(obj, buf);
 
        LogString newFileName(buf);
 
@@ -402,7 +396,7 @@ RolloverDescriptionPtr TimeBasedRollingPolicy::rollover(
                {
                        if (getPatternConverterList().size())
                        {
-                               
(*(getPatternConverterList().begin()))->format(obj, m_priv->_fileNamePattern, 
pool);
+                               
(*(getPatternConverterList().begin()))->format(obj, m_priv->_fileNamePattern);
                        }
                        else
                        {
diff --git a/src/main/cpp/zipcompressaction.cpp 
b/src/main/cpp/zipcompressaction.cpp
index 0da65bb6..5ef69a37 100644
--- a/src/main/cpp/zipcompressaction.cpp
+++ b/src/main/cpp/zipcompressaction.cpp
@@ -31,10 +31,16 @@ using namespace LOG4CXX_NS::helpers;
 
 struct ZipCompressAction::ZipCompressActionPrivate : public ActionPrivate
 {
-       ZipCompressActionPrivate( const File& toRename,
-               const File& renameTo,
-               bool deleteSource):
-               source(toRename), destination(renameTo), 
deleteSource(deleteSource) {}
+       ZipCompressActionPrivate
+               ( const File& toRename
+               , const File& renameTo
+               , bool deleteSource
+               )
+               : ActionPrivate{ LOG4CXX_STR("zip") }
+               , source(toRename)
+               , destination(renameTo)
+               , deleteSource(deleteSource)
+               {}
 
        const File source;
        const File destination;
@@ -52,14 +58,14 @@ ZipCompressAction::ZipCompressAction(const File& src,
 {
 }
 
-bool ZipCompressAction::execute(LOG4CXX_NS::helpers::Pool& p) const
+bool ZipCompressAction::execute( LOG4CXX_EXECUTE_ACTION_FORMAL_PARAMETERS ) 
const
 {
        if (!priv->source.exists())
        {
                return false;
        }
-
-       apr_pool_t* aprpool = p.getAPRPool();
+       helpers::Pool tempPool;
+       apr_pool_t* aprpool = tempPool.getAPRPool();
        apr_procattr_t* attr;
        apr_status_t stat = apr_procattr_create(&attr, aprpool);
 
@@ -104,8 +110,8 @@ bool ZipCompressAction::execute(LOG4CXX_NS::helpers::Pool& 
p) const
 
        args[i++] = "zip";
        args[i++] = "-q";
-       args[i++] = Transcoder::encode(priv->destination.getPath(), p);
-       args[i++] = Transcoder::encode(priv->source.getPath(), p);
+       args[i++] = Transcoder::encode(priv->destination.getPath(), tempPool);
+       args[i++] = Transcoder::encode(priv->source.getPath(), tempPool);
        args[i++] = NULL;
 
        if (priv->destination.exists())
diff --git a/src/main/include/log4cxx/private/action_priv.h 
b/src/main/include/log4cxx/private/action_priv.h
index d2688a78..aa9f2061 100644
--- a/src/main/include/log4cxx/private/action_priv.h
+++ b/src/main/include/log4cxx/private/action_priv.h
@@ -18,6 +18,7 @@
 #define LOG4CXX_ACTION_PRIVATE_H
 
 #include <log4cxx/rolling/action.h>
+#include <mutex>
 
 namespace LOG4CXX_NS
 {
@@ -26,25 +27,25 @@ namespace rolling
 
 struct Action::ActionPrivate
 {
-       ActionPrivate() :
-               complete(false),
-               interrupted(false),
-               pool() {}
+       ActionPrivate(const LogString& name = LOG4CXX_STR("An action") )
+               : actionName(name)
+       {}
 
        virtual ~ActionPrivate(){}
 
        /**
-        * Is action complete.
+        * Did the action complete.
         */
-       bool complete;
+       bool complete{ false };
 
        /**
-        * Is action interrupted.
+        * Is the action closed.
         */
-       bool interrupted;
+       bool closed{ false };
 
-       LOG4CXX_NS::helpers::Pool pool;
        std::mutex mutex;
+
+       LogString actionName;
 };
 
 }
diff --git a/src/main/include/log4cxx/rolling/action.h 
b/src/main/include/log4cxx/rolling/action.h
index c89077f9..48c9d249 100644
--- a/src/main/include/log4cxx/rolling/action.h
+++ b/src/main/include/log4cxx/rolling/action.h
@@ -20,8 +20,6 @@
 
 #include <log4cxx/helpers/object.h>
 #include <log4cxx/helpers/pool.h>
-#include <mutex>
-#include <memory>
 
 namespace LOG4CXX_NS
 {
@@ -51,24 +49,50 @@ class Action : public virtual LOG4CXX_NS::helpers::Object
 
        public:
                /**
-                * Perform action.
+                * Perform the action.
                 *
                 * @return true if successful.
                 */
-               virtual bool execute(LOG4CXX_NS::helpers::Pool& pool) const = 0;
+#if LOG4CXX_ABI_VERSION <= 15
+               bool execute() const;
+               /**
+               @deprecated The \c pool parameter is not used and will be 
removed in a future version.
+               Implement this method for now, but plan to migrate to execute() 
without a helpers::Pool parameter.
+               */
+               virtual bool execute(helpers::Pool& pool) const = 0;
+#define LOG4CXX_EXECUTE_ACTION_FORMAL_PARAMETERS helpers::Pool& p
+#else
+               virtual bool execute() const = 0;
+#define LOG4CXX_EXECUTE_ACTION_FORMAL_PARAMETERS
+               /**
+               @deprecated The \c pool parameter is not used and will be 
removed in a future version.
+               */
+               [[deprecated("Use execute() without a Pool parameter instead")]]
+               bool execute(helpers::Pool& pool) const;
+#endif
 
-               void run(LOG4CXX_NS::helpers::Pool& pool);
+               /* Call execute() if not already closed.
+               */
+               void run();
 
+               /* Wait until run() completes.
+               */
                void close();
 
                /**
-                * Tests if the action is complete.
-                * @return true if action is complete.
+                * Is action is complete?
                 */
                bool isComplete() const;
 
+               /* The action description
+               */
+               LogString getName() const;
+
+#if LOG4CXX_ABI_VERSION <= 15
                void reportException(const std::exception&);
 
+               void run(helpers::Pool& pool);
+#endif
 
 };
 
diff --git a/src/main/include/log4cxx/rolling/filerenameaction.h 
b/src/main/include/log4cxx/rolling/filerenameaction.h
index e17c8d99..96eda924 100644
--- a/src/main/include/log4cxx/rolling/filerenameaction.h
+++ b/src/main/include/log4cxx/rolling/filerenameaction.h
@@ -44,12 +44,11 @@ class FileRenameAction : public Action
                        const File& renameTo,
                        bool renameEmptyFile);
 
+               using Action::execute;
                /**
-                * Perform action.
-                *
-                * @return true if successful.
+                * Perform rename.
                 */
-               bool execute(LOG4CXX_NS::helpers::Pool& pool) const override;
+               bool execute( LOG4CXX_EXECUTE_ACTION_FORMAL_PARAMETERS ) const 
override;
 };
 
 LOG4CXX_PTR_DEF(FileRenameAction);
diff --git a/src/main/include/log4cxx/rolling/fixedwindowrollingpolicy.h 
b/src/main/include/log4cxx/rolling/fixedwindowrollingpolicy.h
index b0beca77..99b23b59 100644
--- a/src/main/include/log4cxx/rolling/fixedwindowrollingpolicy.h
+++ b/src/main/include/log4cxx/rolling/fixedwindowrollingpolicy.h
@@ -83,8 +83,10 @@ class LOG4CXX_EXPORT FixedWindowRollingPolicy : public 
RollingPolicyBase
                 */
                enum { MAX_WINDOW_SIZE = 12 };
 
-               bool purge(int purgeStart, int maxIndex, 
LOG4CXX_NS::helpers::Pool& p) const;
-
+               bool purge(int purgeStart, int maxIndex) const;
+#if LOG4CXX_ABI_VERSION <= 15
+               bool purge(int lowIndex, int highIndex, helpers::Pool& pool) 
const;
+#endif
        public:
 
                FixedWindowRollingPolicy();
@@ -122,21 +124,17 @@ class LOG4CXX_EXPORT FixedWindowRollingPolicy : public 
RollingPolicyBase
                void setMaxIndex(int newVal);
                void setMinIndex(int newVal);
 
+               using RollingPolicy::initialize;
                /**
                 * {@inheritDoc}
                 */
-               RolloverDescriptionPtr initialize(
-                       const   LogString&              currentActiveFile,
-                       const   bool                    append,
-                       helpers::Pool& pool) override;
+               RolloverDescriptionPtr initialize( 
LOG4CXX_ROLLING_POLICY_INITIALIZE_FORMAL_PARAMETERS ) override;
 
+               using RollingPolicy::rollover;
                /**
                 * {@inheritDoc}
                 */
-               RolloverDescriptionPtr rollover(
-                       const   LogString&              currentActiveFile,
-                       const   bool                    append,
-                       helpers::Pool& pool) override;
+               RolloverDescriptionPtr rollover( 
LOG4CXX_ROLLING_POLICY_ROLLOVER_FORMAL_PARAMETERS ) override;
 
        protected:
                /**
diff --git a/src/main/include/log4cxx/rolling/gzcompressaction.h 
b/src/main/include/log4cxx/rolling/gzcompressaction.h
index 92184f5d..a8be0a95 100644
--- a/src/main/include/log4cxx/rolling/gzcompressaction.h
+++ b/src/main/include/log4cxx/rolling/gzcompressaction.h
@@ -45,12 +45,11 @@ class GZCompressAction : public Action
                        bool deleteSource);
                ~GZCompressAction();
 
+               using Action::execute;
                /**
-                * Perform action.
-                *
-                * @return true if successful.
+                * Compress the file.
                 */
-               bool execute(LOG4CXX_NS::helpers::Pool& pool) const override;
+               bool execute( LOG4CXX_EXECUTE_ACTION_FORMAL_PARAMETERS ) const 
override;
 
                /**
                 * Set to true to throw an IOException on a fork failure.  By 
default, this
diff --git a/src/main/include/log4cxx/rolling/rollingpolicy.h 
b/src/main/include/log4cxx/rolling/rollingpolicy.h
index 9d2dcc04..79b53d41 100644
--- a/src/main/include/log4cxx/rolling/rollingpolicy.h
+++ b/src/main/include/log4cxx/rolling/rollingpolicy.h
@@ -51,15 +51,29 @@ class LOG4CXX_EXPORT RollingPolicy :
                 *
                 * @param currentActiveFile current value of 
RollingFileAppender.getFile().
                 * @param append current value of 
RollingFileAppender.getAppend().
-                * @param pool pool for memory allocations during call.
                 * @return Description of the initialization, may be null to 
indicate
                 * no initialization needed.
-                * @throws SecurityException if denied access to log files.
                 */
+#if LOG4CXX_ABI_VERSION <= 15
+               RolloverDescriptionPtr initialize(const LogString& 
currentActiveFile, bool append);
+               /**
+               @deprecated The \c pool parameter is not used and will be 
removed in a future version.
+               Implement this method for now, but plan to migrate to 
initialize() without a helpers::Pool parameter.
+               */
                virtual RolloverDescriptionPtr initialize(
                        const   LogString&              currentActiveFile,
                        const   bool                    append,
                        LOG4CXX_NS::helpers::Pool& pool) = 0;
+#define LOG4CXX_ROLLING_POLICY_INITIALIZE_FORMAL_PARAMETERS const LogString& 
currentActiveFile, bool append, helpers::Pool& p
+#else
+               virtual RolloverDescriptionPtr initialize(const LogString& 
currentActiveFile, bool append) = 0;
+#define LOG4CXX_ROLLING_POLICY_INITIALIZE_FORMAL_PARAMETERS const LogString& 
currentActiveFile, bool append
+               /**
+               @deprecated The \c pool parameter is not used and will be 
removed in a future version.
+               */
+               [[deprecated("Use initialize() without a Pool parameter 
instead")]]
+               RolloverDescriptionPtr initialize(const LogString& 
currentActiveFile, bool append, helpers::Pool& pool);
+#endif
 
                /**
                 * Prepare for a rollover.  This method is called prior to
@@ -69,15 +83,29 @@ class LOG4CXX_EXPORT RollingPolicy :
                 *
                 * @param currentActiveFile file name for current active log 
file.
                 * @param append current value of the parent 
FileAppender.getAppend().
-                * @param pool pool for memory allocations during call.
                 * @return Description of pending rollover, may be null to 
indicate no rollover
                 * at this time.
-                * @throws SecurityException if denied access to log files.
                 */
+#if LOG4CXX_ABI_VERSION <= 15
+               RolloverDescriptionPtr rollover(const LogString& 
currentActiveFile, bool append);
+               /**
+               @deprecated The \c pool parameter is not used and will be 
removed in a future version.
+               Implement this method for now, but plan to migrate to 
rollover() without a helpers::Pool parameter.
+               */
                virtual RolloverDescriptionPtr rollover(
                        const   LogString&              currentActiveFile,
                        const   bool                    append,
                        LOG4CXX_NS::helpers::Pool& pool) = 0;
+#define LOG4CXX_ROLLING_POLICY_ROLLOVER_FORMAL_PARAMETERS const LogString& 
currentActiveFile, bool append, helpers::Pool& p
+#else
+               virtual RolloverDescriptionPtr rollover(const LogString& 
currentActiveFile, bool append) = 0;
+#define LOG4CXX_ROLLING_POLICY_ROLLOVER_FORMAL_PARAMETERS const LogString& 
currentActiveFile, bool append
+               /**
+               @deprecated The \c pool parameter is not used and will be 
removed in a future version.
+               */
+               [[deprecated("Use rollover() without a Pool parameter 
instead")]]
+               RolloverDescriptionPtr rollover(const LogString& 
currentActiveFile, bool append, helpers::Pool& pool);
+#endif
 };
 
 LOG4CXX_PTR_DEF(RollingPolicy);
diff --git a/src/main/include/log4cxx/rolling/rollingpolicybase.h 
b/src/main/include/log4cxx/rolling/rollingpolicybase.h
index f2814e04..616bc04b 100644
--- a/src/main/include/log4cxx/rolling/rollingpolicybase.h
+++ b/src/main/include/log4cxx/rolling/rollingpolicybase.h
@@ -117,13 +117,16 @@ class LOG4CXX_EXPORT RollingPolicyBase
                 *
                 * @param obj object to be evaluted in formatting, may not be 
null.
                 * @param buf string buffer to which formatted file name is 
appended, may not be null.
-                * @param p memory pool.
                 */
-               void formatFileName(const helpers::ObjectPtr& obj,
-                       LogString& buf, helpers::Pool& p) const;
+               void formatFileName(const helpers::ObjectPtr& obj, LogString& 
buf) const;
 
                LOG4CXX_NS::pattern::PatternConverterPtr 
getIntegerPatternConverter() const;
                LOG4CXX_NS::pattern::PatternConverterPtr 
getDatePatternConverter() const;
+
+#if LOG4CXX_ABI_VERSION <= 15
+               void formatFileName(const helpers::ObjectPtr& obj,
+                       LogString& buf, helpers::Pool& p) const;
+#endif
 };
 
 LOG4CXX_PTR_DEF(RollingPolicyBase);
diff --git a/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h 
b/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h
index 5d806f08..3c29f618 100755
--- a/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h
+++ b/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h
@@ -172,21 +172,17 @@ class LOG4CXX_EXPORT TimeBasedRollingPolicy
 
                void setMultiprocess(bool multiprocess);
 
+               using RollingPolicy::initialize;
                /**
                 * {@inheritDoc}
                 */
-               RolloverDescriptionPtr initialize(
-                       const   LogString&              currentActiveFile,
-                       const   bool                    append,
-                       helpers::Pool& pool) override;
+               RolloverDescriptionPtr initialize( 
LOG4CXX_ROLLING_POLICY_INITIALIZE_FORMAL_PARAMETERS ) override;
 
+               using RollingPolicy::rollover;
                /**
                 * {@inheritDoc}
                 */
-               RolloverDescriptionPtr rollover(
-                       const   LogString&              currentActiveFile,
-                       const   bool                    append,
-                       helpers::Pool& pool) override;
+               RolloverDescriptionPtr rollover( 
LOG4CXX_ROLLING_POLICY_ROLLOVER_FORMAL_PARAMETERS ) override;
 
                /**
                 * Determines if a rollover may be appropriate at this time.  If
diff --git a/src/main/include/log4cxx/rolling/zipcompressaction.h 
b/src/main/include/log4cxx/rolling/zipcompressaction.h
index fd3d0a37..dbec553f 100644
--- a/src/main/include/log4cxx/rolling/zipcompressaction.h
+++ b/src/main/include/log4cxx/rolling/zipcompressaction.h
@@ -44,12 +44,11 @@ class ZipCompressAction : public Action
                        const File& destination,
                        bool deleteSource);
 
+               using Action::execute;
                /**
-                * Perform action.
-                *
-                * @return true if successful.
+                * Compress the file.
                 */
-               bool execute(LOG4CXX_NS::helpers::Pool& pool) const override;
+               bool execute( LOG4CXX_EXECUTE_ACTION_FORMAL_PARAMETERS ) const 
override;
 
                /**
                 * Set to true to throw an IOException on a fork failure.  By 
default, this
diff --git a/src/site/doxy/Doxyfile.in b/src/site/doxy/Doxyfile.in
index 20aec169..ac061ca8 100644
--- a/src/site/doxy/Doxyfile.in
+++ b/src/site/doxy/Doxyfile.in
@@ -2370,6 +2370,9 @@ PREDEFINED             = LOG4CXX_NS=log4cxx \
                          
LOG4CXX_WRITE_OUTPUT_STREAM_FORMAL_PARAMETERS="ByteBuffer& buf, helpers::Pool& 
p" \
                          
LOG4CXX_CLOSE_READER_FORMAL_PARAMETERS="helpers::Pool& p" \
                          LOG4CXX_READ_READER_FORMAL_PARAMETERS="helpers::Pool& 
p" \
+                         
LOG4CXX_EXECUTE_ACTION_FORMAL_PARAMETERS="helpers::Pool& p" \
+                         
LOG4CXX_ROLLING_POLICY_INITIALIZE_FORMAL_PARAMETERS="const LogString& 
currentActiveFile, bool append, helpers::Pool& p" \
+                         
LOG4CXX_ROLLING_POLICY_ROLLOVER_FORMAL_PARAMETERS="const LogString& 
currentActiveFile, bool append, helpers::Pool& p" \
                          LOG4CXX_HAS_DOMCONFIGURATOR=1 \
                          LOG4CXX_ASYNC_BUFFER_SUPPORTS_FMT=1 \
                          __LOG4CXX_FUNC__=compiler_dependent

Reply via email to