summaryrefslogtreecommitdiff
path: root/configmgr
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2005-03-21 12:31:47 +0000
committerKurt Zenker <kz@openoffice.org>2005-03-21 12:31:47 +0000
commite78fed244c663b69fc6801c03eb4f15fbc52fbd5 (patch)
tree2ff6b2fa52d043a44b9d0e00d5ae639cb8c20de8 /configmgr
parentefbe85b41978f837aefc20701e9d5f874091dd67 (diff)
INTEGRATION: CWS fwkpostbeta1 (1.20.32); FILE MERGED
2005/01/31 18:50:42 jb 1.20.32.2: #i41700# Don't enforce write protection, if merging localization data; log rejections due to finalized/mandatory defaults 2005/01/31 17:53:26 jb 1.20.32.1: #i41073# Suppress spurious override warnings for localized layers
Diffstat (limited to 'configmgr')
-rw-r--r--configmgr/source/backend/layermerge.cxx67
1 files changed, 58 insertions, 9 deletions
diff --git a/configmgr/source/backend/layermerge.cxx b/configmgr/source/backend/layermerge.cxx
index 35053afd5f72..19b6b3e5bccd 100644
--- a/configmgr/source/backend/layermerge.cxx
+++ b/configmgr/source/backend/layermerge.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: layermerge.cxx,v $
*
- * $Revision: 1.20 $
+ * $Revision: 1.21 $
*
- * last change: $Author: kz $ $Date: 2004-08-31 14:55:46 $
+ * last change: $Author: kz $ $Date: 2005-03-21 13:31:47 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -524,10 +524,47 @@ void LayerMergeHandler::applyAttributes(INode * pNode, sal_Int16 aNodeAttributes
}
// -----------------------------------------------------------------------------
+static
+void doLogRejection(sal_Int16 loglevel, DataBuilderContext const & aContext,
+ INode * pNode, bool bMandatory)
+{
+ rtl::OUStringBuffer aMessage;
+ aMessage.appendAscii("Rejecting override: Node/Property ")
+ .append(aContext.getNodePath(pNode->getName()))
+ .appendAscii(" is ").appendAscii(bMandatory ? "mandatory" : "finalized")
+ .appendAscii(" in a prior layer.");
+
+ aContext.getLogger().log(loglevel,aMessage.makeStringAndClear(),
+ bMandatory ? "addOrReplace/dropNode()" : "startOverride()",
+ "configmgr::LayerMergeHandler");
+}
+
+static inline
+void logRejection(DataBuilderContext const & aContext, INode * pNode, bool bMandatory=false)
+{
+ const sal_Int16 loglevel = LogLevel::INFO;
+ if (aContext.getLogger().isLogging(loglevel))
+ {
+ doLogRejection(loglevel, aContext, pNode, bMandatory);
+ }
+}
+// -----------------------------------------------------------------------------
+
bool LayerMergeHandler::startOverride(INode * pNode, sal_Bool bClear) /* ensure writable, mark merged */
CFG_NOTHROW( )
{
- if (!m_aContext.isWritable(pNode)) return false;
+ OSL_PRECOND(pNode,"startOverride: non-NULL base node required");
+ if (!m_aContext.isWritable(pNode))
+ {
+ // #i41700# write-protection is enforced, unless merging localizations
+ if (!m_bSublayer)
+ {
+ logRejection(m_aContext,pNode);
+ return false;
+ }
+ else
+ OSL_ASSERT(m_aLocale.getLength() != 0);
+ }
if (pNode->isDefault()) pNode->modifyState( node::isMerged );
@@ -632,6 +669,11 @@ void LayerMergeHandler::overrideLayerRoot( const OUString& aName, sal_Int16 aAtt
}
// -----------------------------------------------------------------------------
+static inline
+sal_Int16 getOverrideViolationLogLevel(bool bIsSublayer)
+{ return bIsSublayer ? LogLevel::FINER : LogLevel::INFO; }
+// -----------------------------------------------------------------------------
+
void SAL_CALL LayerMergeHandler::overrideNode( const OUString& aName, sal_Int16 aAttributes, sal_Bool bClear )
throw (MalformedDataException, lang::WrappedTargetException, uno::RuntimeException)
{
@@ -658,13 +700,14 @@ void SAL_CALL LayerMergeHandler::overrideNode( const OUString& aName, sal_Int16
}
else // ignore non-matched data
{
- if (m_aContext.getLogger().isLogging(LogLevel::INFO))
+ const sal_Int16 loglevel = getOverrideViolationLogLevel(m_bSublayer);
+ if (m_aContext.getLogger().isLogging(loglevel))
{
rtl::OUStringBuffer aMessage;
aMessage.appendAscii("Node ").append(m_aContext.getNodePath(aName))
.appendAscii(" to be overridden does not exist - skipping");
- m_aContext.getLogger().info(aMessage.makeStringAndClear(), "overrideNode()", "configmgr::LayerMergeHandler");
+ m_aContext.getLogger().log(loglevel,aMessage.makeStringAndClear(), "overrideNode()", "configmgr::LayerMergeHandler");
}
// m_aContext.raiseNoSuchElementException("Layer merging: The node to be overridden does not exist.",aName);
this->skipNode();
@@ -682,6 +725,7 @@ void LayerMergeHandler::implAddOrReplaceNode( const OUString& aName, const Templ
if (!m_aContext.isRemovable(pReplacedNode))
{
+ logRejection(m_aContext,pReplacedNode,true);
this->skipNode();
return;
}
@@ -770,17 +814,21 @@ void SAL_CALL LayerMergeHandler::dropNode( const OUString& aName )
{
this->ensureUnchanged(pDropped);
if (!m_aContext.isRemovable(pDropped))
+ {
+ logRejection(m_aContext,pDropped,true);
return;
+ }
}
else
{
- if (m_aContext.getLogger().isLogging(LogLevel::INFO))
+ const sal_Int16 loglevel = getOverrideViolationLogLevel(m_bSublayer);
+ if (m_aContext.getLogger().isLogging(loglevel))
{
rtl::OUStringBuffer aMessage;
aMessage.appendAscii("Node ").append(m_aContext.getNodePath(aName))
.appendAscii(" to be removed does not exist - ignoring");
- m_aContext.getLogger().info(aMessage.makeStringAndClear(), "dropNode()", "configmgr::LayerMergeHandler");
+ m_aContext.getLogger().log(loglevel,aMessage.makeStringAndClear(), "dropNode()", "configmgr::LayerMergeHandler");
}
// m_aContext.raiseNoSuchElementException("Layer merging: The node to be removed does not exist.",aName);
}
@@ -812,13 +860,14 @@ void SAL_CALL LayerMergeHandler::overrideProperty( const OUString& aName, sal_In
}
else // ignore non-matched data
{
- if (m_aContext.getLogger().isLogging(LogLevel::INFO))
+ const sal_Int16 loglevel = getOverrideViolationLogLevel(m_bSublayer);
+ if (m_aContext.getLogger().isLogging(loglevel))
{
rtl::OUStringBuffer aMessage;
aMessage.appendAscii("Property ").append(m_aContext.getNodePath(aName))
.appendAscii(" to be overridden does not exist - skipping");
- m_aContext.getLogger().info(aMessage.makeStringAndClear(), "overrideNode()", "configmgr::LayerMergeHandler");
+ m_aContext.getLogger().log(loglevel,aMessage.makeStringAndClear(), "overrideNode()", "configmgr::LayerMergeHandler");
}
// m_aContext.raiseUnknownPropertyException("Layer merging: The property to be overridden does not exist.",aName);
this->skipNode();