/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #ifndef __com_sun_star_configuration_ConfigurationUpdateAccess_idl__ #define __com_sun_star_configuration_ConfigurationUpdateAccess_idl__ #include #include #include #include module com { module sun { module star { module configuration { /** provides modifying access to a fragment of the configuration hierarchy.

Extends ConfigurationAccess to support modifying values or inserting and removing elements.

Descendants of this service also implement this service unless they are marked read-only (which is indicated by attribute PropertyAttribute::READONLY), in which case they only need implement ConfigurationAccess.

The classification of implementations that is described for ConfigurationAccess applies to implementations of this service as well. Therefore an implementation will support one of several alternate services describing its Container role and one of several alternate services describing its Element role. These services are extensions of the respective services documented for ConfigurationAccess.

  • Container role: A group permits changing child values. A set permits inserting and removing contained elements.
  • Element role: The root element of a modifiable tree provides extended functionality to control processing of changes for the entire tree (fragment) by supporting XChangesBatch. For elements of a set or a group no additional interfaces are supported.
@see ConfigurationProvider Root instances of this service can be requested from a ConfigurationProvider */ published service ConfigurationUpdateAccess { /** is the basic service providing read access to an element of the configuration hierarchy and its child and descendent elements.

The HierarchyAccess specialization implemented will be further specialized to support modifying access. Implementations shall therefore implement one of SetUpdate or GroupUpdate depending on the Container role.

If the HierarchyElement specialization that is implemented is AccessRootElement, the implementation must support the extended functionality of UpdateRootElement. Otherwise, there are no new requirements mandated by the Element role.

*/ service ConfigurationAccess; /** specializes SetAccess to support modifying the element.

Implemented, if this element is a Set. Otherwise service GroupUpdate is provided.

*/ [optional] service SetUpdate; /** specializes GroupAccess to support modifying contained data.

Implemented, if this element is a Group. Otherwise service SetUpdate is provided.

*/ [optional] service GroupUpdate; /** specializes AccessRootElement to support transaction-like control over a batch of changes accumulated within the tree fragment.

Implemented, if this element is the Root of the whole hierarchy. Otherwise either SetElement or GroupElement is provided.

@see ConfigurationProvider Instances obtained from a ConfigurationProvider will implement this version of HierarchyElement. */ [optional] service UpdateRootElement; }; }; }; }; }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */