blob: 4ccc0b672993924a6c40e4d2a57ba09ec05ba90c [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef __com_sun_star_configuration_backend_XLayerHandler_idl__
#define __com_sun_star_configuration_backend_XLayerHandler_idl__
#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif
#ifndef __com_sun_star_configuration_backend_TemplateIdentifier_idl__
#include <com/sun/star/configuration/backend/TemplateIdentifier.idl>
#endif
#ifndef __com_sun_star_configuration_backend_MalformedDataException_idl__
#include <com/sun/star/configuration/backend/MalformedDataException.idl>
#endif
#ifndef __com_sun_star_lang_WrappedTargetException_idl__
#include <com/sun/star/lang/WrappedTargetException.idl>
#endif
//=============================================================================
module com { module sun { module star { module configuration { module backend {
//=============================================================================
/** receives a description of a configuration layer
as a sequence of events.
@since OpenOffice 1.1.2
*/
published interface XLayerHandler: ::com::sun::star::uno::XInterface
{
//-------------------------------------------------------------------------
/** receives notification that a layer description is started
for a component.
<p> Subsequent calls describe the contents of the layer
until a matching call to <member>XLayerHandler::endLayer()</member>
is encountered.
</p>
@throws com::sun::star::configuration::backend::MalformedDataException
if there is an unfinished layer in progress
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
*/
void startLayer( )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that a layer description is complete.
<p> Must match a previous call to <member>XLayerHandler::startLayer()</member>.
</p>
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if invalid data is detected in the layer</li>
<li>if there is a unfinished subnode in progress</li>
<li>if no layer is started at all</li>
<li>if the layer tries to override read-only or final data</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
*/
void endLayer( )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that a description of a node override is started.
<p> Subsequent calls describe overrides to properties and members
or items of the node until a matching call to
<member>XLayerHandler::endNode()</member>is encountered.
</p>
@param aName
specifies the name of the node.
@param aAttributes
specifies attribute values to be applied to the node.
<p> The value is a combination of
<type>NodeAttribute</type> flags.
</p>
<p> The attributes are combined cumulatively with those
set on lower layers.
</p>
@param bClear
if <TRUE/>, specifies that the node should be cleared to an empty
state by removing all non-mandatory children from lower layers prior
to applying the overrides.
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if there isn't a layer in progress</li>
<li>if there already was a change to that node</li>
<li>if there is no node with that name</li>
<li>if the node is marked read-only in a lower layer</li>
<li>if the name is not a valid node name</li>
<li>if the attributes are not valid for the node</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
@see com::sun::star::configuration::backend::NodeAttribute
*/
void overrideNode( [in] string aName,
[in] short aAttributes,
[in] boolean bClear )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that a new item is started.
<p> The current node must be a set and
a preexisting item (if any) must be removeable.
</p>
<p> The new item will be created from the default template
of the set.
</p>
<p> Subsequent calls describe the difference from the template
of properties and members or items of the node until
a matching call to <member>XLayerHandler::endNode()</member>
is encountered.
</p>
@param aName
specifies the name of the item.
@param aAttributes
specifies attribute values to be applied to the new node.
<p> The value is a combination of
<type>NodeAttribute</type> flags. Note that
<member>NodeAttribute::FUSE</member> has an impact on the
semantics of this method.
</p>
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if there isn't a set node in progress currently</li>
<li>if there already was a change to a node of that name</li>
<li>if the template for the new node is not found</li>
<li>if an item of that name on a lower layer is not removeable</li>
<li>if the name is not a valid item name</li>
<li>if the attributes are not valid for the node</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
@see com::sun::star::configuration::backend::NodeAttribute
*/
void addOrReplaceNode( [in] string aName,
[in] short aAttributes )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that a new item based on a particular template
is started.
<p> The current node must be a set and
a preexisting item (if any) must be removeable.
</p>
<p> Subsequent calls describe the difference from the template
of properties and members or items of the node until
a matching call to <member>XLayerHandler::endNode()</member>
is encountered.
</p>
@param aName
specifies the name of the item.
@param aTemplate
specifies the template to use for the new node
@param aAttributes
specifies attribute values to be applied to the new node.
<p> The value is a combination of
<type>NodeAttribute</type> flags. Note that
<member>NodeAttribute::FUSE</member> has an impact on the
semantics of this method.
</p>
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if there isn't a set node in progress currently</li>
<li>if there already was a change to a node of that name</li>
<li>if the template for the new node is not found</li>
<li>if the template is not a valid item type for the containing set</li>
<li>if an item of that name on a lower layer is not removeable</li>
<li>if the name is not a valid item name</li>
<li>if the attributes are not valid for the node</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
@see com::sun::star::configuration::backend::NodeAttribute
*/
void addOrReplaceNodeFromTemplate( [in] string aName,
[in] TemplateIdentifier aTemplate,
[in] short aAttributes )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that a node description is complete.
<p> Must match the last open call to
<member>XLayerHandler::overrideNode()</member>,
<member>XLayerHandler::addOrReplaceNode()</member> or
<member>XLayerHandler::addOrReplaceNodeFromTemplate()</member>.
</p>
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if invalid data is detected in the node</li>
<li>if no node is started at all</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
*/
void endNode( )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that a node is dropped from a set.
<p> The current node must be a set and
the item must be removeable.
</p>
@param aName
specifies the name of the node.
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if there isn't a set node in progress currently</li>
<li>if there already was a change to a node of that name</li>
<li>if there is no item with that name</li>
<li>if the item is not removeable</li>
<li>if the name is not a valid node name</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
*/
void dropNode( [in] string aName )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that an existing property is modified.
<p> Subsequent calls describe new value(s) for the property until a
matching call to <member>XLayerHandler::endProperty()</member>
is encountered.
</p>
@param aName
specifies the name of the property.
@param aAttributes
specifies the new attributes of the property.
<p> The value is a combination of
<type>NodeAttribute</type> flags.
</p>
<p> The attributes are combined cumulatively with those
set on lower layers.
</p>
@param aType
specifies the type of the property.
<p> This must be the same type as is already defined in the schema
or lower layers, unless the previous type was unspecified
(as indicated by
<const scope="com::sun::star::uno">TypeClass::ANY</const>.)
</p>
<p> A <void/> type indicates that the type is unspecified
in this layer.
In this case any subsequent value may be of a generic type
(e.g. <atom>string</atom> or - for list values -
<atom dim="[]">string</atom>.) Such values may be
converted to the type defined in the schema by
the implementation.
</p>
@param bClear
if <TRUE/>, specifies that the property should be cleared to an empty
state by discarding all values from lower layers prior
to applying the overrides.
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if there isn't a group or extensible node in progress currently</li>
<li>if there already was a change to a property of that name</li>
<li>if there is no property with that name</li>
<li>if the property is read-only</li>
<li>if the type does not match the type of the property</li>
<li>if a type is missing and cannot be determined otherwise</li>
<li>if the name is not a valid property name</li>
<li>if the attributes are not valid for the property</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
@see com::sun::star::configuration::backend::NodeAttribute
*/
void overrideProperty( [in] string aName,
[in] short aAttributes,
[in] type aType,
[in] boolean bClear )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that the value of the current property
is overridden. .
@param aValue
specifies the new value of the property.
<p> The value must match the type of the current property.
If the property does not have the
<const>SchemaAttribute::REQUIRED</const> flag set,
the value can be <void/>.
</p>
<p> If the current property is localized, this value applies
to the default locale.
</p>
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if there isn't a property in progress currently</li>
<li>if there already was a change to the value of that property</li>
<li>if the value does not have the proper type</li>
<li>if the value is not valid for the property</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
@see com::sun::star::configuration::backend::NodeAttribute
*/
void setPropertyValue( [in] any aValue )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that the value of the current localized property
is overridden for a specific locale .
@param aValue
specifies the new value of the property.
<p> The value must match the type of the current property.
If the property does not have the
<const>SchemaAttribute::REQUIRED</const> flag set,
the value can be <void/>.
</p>
@param aLocale
specifies the locale this value should apply to.
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if there isn't a property in progress currently</li>
<li>if the current property isn't localized</li>
<li>if there already was a change to the property for that locale</li>
<li>if the value does not have the proper type</li>
<li>if the value is not valid for the property</li>
<li>if the locale is not a valid locale</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
@see com::sun::star::configuration::backend::NodeAttribute
*/
void setPropertyValueForLocale([in] any aValue,
[in] string aLocale )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that a property description is complete.
<p> Must match an open call to
<member>XLayerHandler::overrideProperty()</member>,
</p>
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if invalid data is detected in the property</li>
<li>if no property is started at all</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
*/
void endProperty( )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that a property having a <void/> value is added
to the current node.
<p> The current node must be extensible.
</p>
@param aName
specifies the name of the new property.
@param aAttributes
specifies the attributes of the new property.
<p> The value is a combination of
<type>NodeAttribute</type> flags and may also contain the
<const>SchemaAttribute::REQUIRED</const> flag.
</p>
<p> <const>NodeAttribute::MANDATORY</const> need not be set,
as dynamically added properties always are mandatory
in subsequent layers.
</p>
@param aType
specifies the type of the new property.
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if there isn't an extensible node in progress currently</li>
<li>if a property with that name already exists</li>
<li>if the specified type is not allowed for a property</li>
<li>if the name is not a valid property name</li>
<li><li>if the attributes are not valid for the property</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
@see com::sun::star::configuration::backend::SchemaAttribute
*/
void addProperty( [in] string aName,
[in] short aAttributes,
[in] type aType )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
/** receives notification that a property having a non-<void/> value
is added to the current node.
<p> The current node must be extensible.
</p>
@param aName
specifies the name of the new property.
@param aAttributes
specifies the attributes of the new property.
<p> The value is a combination of
<type>NodeAttribute</type> flags and may also contain the
<const>SchemaAttribute::REQUIRED</const> flag.
</p>
</p>
<p> <const>NodeAttribute::MANDATORY</const> need not be set,
as dynamic properties always are mandatory
in subsequent layers.
</p>
@param aValue
specifies the value of the new property.
<p> The value also determines the type.
Therefore the value must not be <void/>.
</p>
@throws com::sun::star::configuration::backend::MalformedDataException
<ul>
<li>if there isn't an extensible node in progress currently</li>
<li>if a property with that name already exists</li>
<li>if the type of the value is not an allowed type
or if the value is <void/></li>
<li>if the name is not a valid property name</li>
<li>if the value is not valid for the property</li>
<li>if the attributes are not valid for the property</li>
</ul>
<p><em>Not every implementation can detect each condition</em></p>
@throws com::sun::star::lang::WrappedTargetException
if an error occurs processing the event.
@see com::sun::star::configuration::backend::SchemaAttribute
*/
void addPropertyWithValue( [in] string aName,
[in] short aAttributes,
[in] any aValue )
raises( MalformedDataException,
com::sun::star::lang::WrappedTargetException );
//-------------------------------------------------------------------------
};
//=============================================================================
}; }; }; }; };
//=============================================================================
#endif