office-gobmx/configmgr/source
Tor Lillqvist 469c9ac2f9 Enforce a "lib" prefix for UNO components for Android
This commit for the old build system. (Don't bother for components not
relevant for Android.)

The Android package installer (as invoked through "adb install", from
"ant debug install") silently ignores native libraries in app packages
(.apk files) whose names don't start with "lib" and end with ".so".

The package builder (as invoked through "ant debug") in the SDK gladly
includes also thusly named native libraries in the .apk, though. Yay
for consistency.
2011-11-17 15:22:59 +02:00
..
access.cxx
access.hxx
additions.hxx
broadcaster.cxx
broadcaster.hxx
childaccess.cxx
childaccess.hxx
components.cxx Cleaned up configmgr initialization. 2011-10-31 16:51:35 +01:00
components.hxx Cleaned up configmgr initialization. 2011-10-31 16:51:35 +01:00
configmgr.component
configurationprovider.cxx
configurationprovider.hxx
configurationregistry.cxx
configurationregistry.hxx
data.cxx
data.hxx
defaultprovider.cxx
defaultprovider.hxx
groupnode.cxx
groupnode.hxx
localizedpropertynode.cxx
localizedpropertynode.hxx
localizedvaluenode.cxx
localizedvaluenode.hxx
lock.cxx
lock.hxx
makefile.mk Enforce a "lib" prefix for UNO components for Android 2011-11-17 15:22:59 +02:00
modifications.cxx
modifications.hxx
node.cxx
node.hxx
nodemap.cxx
nodemap.hxx
parsemanager.cxx
parsemanager.hxx
parser.hxx
partial.cxx
partial.hxx
path.hxx
propertynode.cxx
propertynode.hxx
README
rootaccess.cxx
rootaccess.hxx
services.cxx
setnode.cxx
setnode.hxx
type.cxx
type.hxx
update.cxx
update.hxx
valueparser.cxx
valueparser.hxx
writemodfile.cxx
writemodfile.hxx
xcdparser.cxx
xcdparser.hxx
xcsparser.cxx
xcsparser.hxx
xcuparser.cxx Fixed previous configmgr layer numbering fix. 2011-10-27 10:27:02 +02:00
xcuparser.hxx
xmldata.cxx
xmldata.hxx

#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org 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 Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org.  If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#***********************************************************************/

Source Overview
===============

configurationprovider.cxx
configurationregistry.cxx
defaultprovider.cxx
services.cxx
 UNO service implementations.

access.cxx
childaccess.cxx
rootaccess.cxx
 UNO objects passed to clients.

components.cxx
 Central singleton that aggregates all data (reads in the XML files, manages
 modifications and global notifications).

groupnode.cxx
localizedpropertynode.cxx
localizedvaluenode.cxx
node.cxx
propertynode.cxx
setnode.cxx
 Internal representations of data nodes.

parsemanager.cxx
parser.hxx
valueparser.cxx
xcdparser.cxx
xcsparser.cxx
xcuparser.cxx
xmldata.cxx
 XML file reading.

modifications.cxx
writemodfile.cxx
 Modification management.

broadcaster.cxx
 Notification management.

additions.hxx
update.cxx
 Extension manager interface.

data.cxx
lock.cxx
nodemap.cxx
partial.cxx
path.hxx
type.cxx
 Utilities.


Mandatory Set Members
=====================

- A set member can be marked as "mandatory," meaning that a member of that name
must always be present in a set.

- The above definition implies that calling replaceByName on a mandatory set
member is OK.

- The XCU format can contain oor:mandatory attributes on nodes.  (The XCS format
does not support them.  In the registrymodifications file, oor:mandatory
attributes should never be needed, as being mandatory cannot be controlled via
the UNO API.)  The XCU reading code only evaluates the oor:mandatory attribute
for set members, and ignores it everywhere else.

- Only true sets support mandatory members.  A localized property for the "*"
locale, though acting much like a set, does not support mandatory members.

- The OpenOffice.org Registry Format document claims that group extension
properties are implicitly mandatory, but at least the new configmgr code does
not treat them like that (i.e., they can be removed again).

- For simplicity, setMandatory/getMandatory are available as virtual functions
at the base Node, even though they can only make sense for GroupNodes and
SetNodes that are set members.  The default getMandatory implementation returns
NO_LAYER, meaning oor:mandatory is not set to true in any layer.  (Returning
NO_LAYER simplifies the code, e.g., removeByName does not have to check whether
getMandatory is called on a member of a true set to decide whether to forbid
removal.)

- When committing changes (made through the UNO API), the "mandatory" status of
inserted nodes must be updated (in case the insert is due to a replaceByName, or
the "mandatory" flag was added by a concurrent modification of a lower layer).
Also, for to-be-removed nodes, removal is ignored for (newly; due to concurrent
modification of a lower layer) mandatory nodes (but still recorded in
registrymodifications, so may take effect once the lower layer addition is
removed again---whether or not that is a good idea).


XcuParser Modification Recording
================================

- XcuParser records modifications when reading user layer data
(valueParser_.getLayer() == Data::NO_LAYER).

- oor:finalized and oor:mandatory attributes cannot be set via the UNO API, so
it is assumed that user layer data does not contain them (for one, they are not
written by writeModFile; for another, the logic to record modifications expects
a locprop(modify,fuse) to be followed by one or more value(fuse,remove), which
would not necessarily be true if the locprop were only present in the user layer
data to flag it as finalized).

- The logic to record modifications considers the top of the XML element stack.
In the following list of all possible cases, items marked with an asterisk are
recorded:
 ... group(modify,fuse) - group(modify,fuse) - ...
 ... group(modify,fuse) - set(modify,fuse) - ...
 ... group(modify,fuse) - *prop(modify,fuse,replace) - value(fuse)
 ... group(modify,fuse) - *prop(remove)
 ... group(modify,fuse) - locprop(modify,fuse) - *value(fuse)
 ... group(modify,fuse) - locprop(modify,fuse) - *value(remove)
 ... group(modify,fuse) - *locprop(replace) ...
 ... set(modify,fuse,replace) - group(modify/fuse) - ...
 ... set(modify,fuse,replace) - *group(replace/fuse) - ...
 ... set(modify,fuse,replace) - *group(remove)
 ... set(modify,fuse,replace) - set(modify/fuse) - ...
 ... set(modify,fuse,replace) - *set(replace/fuse) - ...
 ... set(modify,fuse,replace) - *set(remove)
Legend: "...": zero or more further items
        "- ...": one or more further items
        "modify,fuse" etc.: any of those operations
        "modify/fuse": a modify or a fuse on an existing member
        "replace/fuse": a replace or a fuse on a non-existing member