summaryrefslogtreecommitdiff
path: root/forms/source/xforms/submission.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'forms/source/xforms/submission.cxx')
-rw-r--r--forms/source/xforms/submission.cxx721
1 files changed, 0 insertions, 721 deletions
diff --git a/forms/source/xforms/submission.cxx b/forms/source/xforms/submission.cxx
deleted file mode 100644
index d94097a62..000000000
--- a/forms/source/xforms/submission.cxx
+++ /dev/null
@@ -1,721 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * 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.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_forms.hxx"
-#include "submission.hxx"
-
-#include "model.hxx"
-#include "binding.hxx"
-#include "mip.hxx"
-#include "evaluationcontext.hxx"
-#include "unohelper.hxx"
-#include "submission/submission_put.hxx"
-#include "submission/submission_post.hxx"
-#include "submission/submission_get.hxx"
-
-#include <rtl/ustring.hxx>
-#include <rtl/ustrbuf.hxx>
-
-#include <com/sun/star/uno/Sequence.hxx>
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/xforms/XModel.hpp>
-#include <com/sun/star/uno/RuntimeException.hpp>
-#include <com/sun/star/xml/xpath/XXPathObject.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/xml/xpath/XPathObjectType.hpp>
-#include <com/sun/star/xml/dom/XNodeList.hpp>
-#include <com/sun/star/xml/dom/XDocument.hpp>
-#include <com/sun/star/xml/dom/XDocumentBuilder.hpp>
-#include <com/sun/star/xml/dom/XDocumentFragment.hpp>
-#include <com/sun/star/xml/dom/NodeType.hpp>
-#include <com/sun/star/task/XInteractionHandler.hpp>
-#include <com/sun/star/task/XInteractionRequest.hpp>
-#include <com/sun/star/task/XInteractionContinuation.hpp>
-#include <com/sun/star/xforms/InvalidDataOnSubmitException.hpp>
-#include <com/sun/star/frame/XFrame.hpp>
-#include <cppuhelper/typeprovider.hxx>
-#include <comphelper/propertysetinfo.hxx>
-#include <comphelper/interaction.hxx>
-#include <unotools/processfactory.hxx>
-#include <memory>
-
-
-
-
-using rtl::OUString;
-using rtl::OUStringBuffer;
-using com::sun::star::beans::UnknownPropertyException;
-using com::sun::star::beans::PropertyVetoException;
-using com::sun::star::lang::IllegalArgumentException;
-using com::sun::star::util::VetoException;
-using com::sun::star::form::submission::XSubmissionVetoListener;
-using com::sun::star::lang::WrappedTargetException;
-using com::sun::star::lang::NoSupportException;
-using com::sun::star::task::XInteractionHandler;
-using com::sun::star::task::XInteractionRequest;
-using com::sun::star::task::XInteractionContinuation;
-using com::sun::star::xforms::XModel;
-using com::sun::star::xforms::InvalidDataOnSubmitException;
-using com::sun::star::container::XNameAccess;
-using com::sun::star::xml::xpath::XXPathObject;
-using com::sun::star::xml::xpath::XPathObjectType;
-using com::sun::star::frame::XFrame;
-using xforms::Submission;
-using xforms::Model;
-using xforms::MIP;
-using std::auto_ptr;
-
-using namespace com::sun::star::uno;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::xml::dom;
-
-Submission::Submission() :
- msID(),
- msBind(),
- maRef(),
- msAction(),
- msMethod(),
- msVersion(),
- mbIndent(),
- msMediaType(),
- msEncoding(),
- mbOmitXmlDeclaration(),
- mbStandalone(),
- msCDataSectionElement(),
- msReplace( OUSTRING("none") ),
- msSeparator(),
- msIncludeNamespacePrefixes(),
- m_aFactory(utl::getProcessServiceFactory())
-{
- initializePropertySet();
-}
-
-Submission::~Submission() throw()
-{
-}
-
-Reference<XModel> Submission::getModel() const
-{
- return mxModel;
-}
-
-void Submission::setModel( const Reference<XModel>& xModel )
-{
- mxModel = xModel;
-}
-
-OUString Submission::getID() const
-{
- return msID;
-}
-
-void Submission::setID( const OUString& sID )
-{
- msID = sID;
-}
-
-OUString Submission::getBind() const
-{
- return msBind;
-}
-
-void Submission::setBind( const OUString& sBind )
-{
- msBind = sBind;
-}
-
-OUString Submission::getRef() const
-{
- return maRef.getExpression();
-}
-
-void Submission::setRef( const OUString& sRef )
-{
- maRef.setExpression( sRef );
-}
-
-OUString Submission::getAction() const
-{
- return msAction;
-}
-
-void Submission::setAction( const OUString& sAction )
-{
- msAction = sAction;
-}
-
-OUString Submission::getMethod() const
-{
- return msMethod;
-}
-
-void Submission::setMethod( const OUString& sMethod )
-{
- msMethod = sMethod;
-}
-
-OUString Submission::getVersion() const
-{
- return msVersion;
-}
-
-void Submission::setVersion( const OUString& sVersion )
-{
- msVersion = sVersion;
-}
-
-bool Submission::getIndent() const
-{
- return mbIndent;
-}
-
-void Submission::setIndent( bool bIndent )
-{
- mbIndent = bIndent;
-}
-
-OUString Submission::getMediaType() const
-{
- return msMediaType;
-}
-
-void Submission::setMediaType( const OUString& sMediaType )
-{
- msMediaType = sMediaType;
-}
-
-OUString Submission::getEncoding() const
-{
- return msEncoding;
-}
-
-void Submission::setEncoding( const OUString& sEncoding )
-{
- msEncoding = sEncoding;
-}
-
-bool Submission::getOmitXmlDeclaration() const
-{
- return mbOmitXmlDeclaration;
-}
-
-void Submission::setOmitXmlDeclaration( bool bOmitXmlDeclaration )
-{
- mbOmitXmlDeclaration = bOmitXmlDeclaration;
-}
-
-bool Submission::getStandalone() const
-{
- return mbStandalone;
-}
-
-void Submission::setStandalone( bool bStandalone )
-{
- mbStandalone = bStandalone;
-}
-
-OUString Submission::getCDataSectionElement() const
-{
- return msCDataSectionElement;
-}
-
-void Submission::setCDataSectionElement( const OUString& sCDataSectionElement )
-{
- msCDataSectionElement = sCDataSectionElement;
-}
-
-OUString Submission::getReplace() const
-{
- return msReplace;
-}
-
-void Submission::setReplace( const OUString& sReplace )
-{
- msReplace = sReplace;
-}
-
-OUString Submission::getSeparator() const
-{
- return msSeparator;
-}
-
-void Submission::setSeparator( const OUString& sSeparator )
-{
- msSeparator = sSeparator;
-}
-
-Sequence< OUString > Submission::getIncludeNamespacePrefixes() const
-{
- return msIncludeNamespacePrefixes;
-}
-
-void Submission::setIncludeNamespacePrefixes( const Sequence< OUString >& rIncludeNamespacePrefixes )
-{
- msIncludeNamespacePrefixes = rIncludeNamespacePrefixes;
-}
-
-bool Submission::doSubmit( const Reference< XInteractionHandler >& xHandler )
-{
- liveCheck();
-
- // construct XXPathObject for submission doc; use bind in preference of ref
- EvaluationContext aEvalContext;
- ComputedExpression aExpression;
- if( msBind.getLength() != 0 )
- {
- Binding* pBinding = Binding::getBinding( mxModel->getBinding(msBind) );
- if( pBinding != NULL )
- {
- aExpression.setExpression( pBinding->getBindingExpression() );
- aEvalContext = pBinding->getEvaluationContext();
- }
- // TODO: else: illegal binding name -> raise error
- }
- else if( maRef.getExpression().getLength() != 0 )
- {
- aExpression.setExpression( maRef.getExpression() );
- aEvalContext = Model::getModel( mxModel )->getEvaluationContext();
- }
- else
- {
- aExpression.setExpression( OUSTRING( "/" ) );
- aEvalContext = Model::getModel( mxModel )->getEvaluationContext();
- }
- aExpression.evaluate( aEvalContext );
- Reference<XXPathObject> xResult = aExpression.getXPath();
- OSL_ENSURE( xResult.is(), "no result?" );
-
- // early out if we have not obtained any result
- if( ! xResult.is() )
- return false;
-
-
- // Reference< XNodeList > aList = xResult->getNodeList();
- OUString aMethod = getMethod();
-
- // strip whitespace-only text node for get submission
- Reference< XDocumentFragment > aFragment = createSubmissionDocument(
- xResult, aMethod.equalsIgnoreAsciiCaseAscii("get"));
-
- // submit result; set encoding, etc.
- auto_ptr<CSubmission> xSubmission;
- if (aMethod.equalsIgnoreAsciiCaseAscii("PUT"))
- xSubmission = auto_ptr<CSubmission>(
- new CSubmissionPut( getAction(), aFragment));
- else if (aMethod.equalsIgnoreAsciiCaseAscii("post"))
- xSubmission = auto_ptr<CSubmission>(
- new CSubmissionPost( getAction(), aFragment));
- else if (aMethod.equalsIgnoreAsciiCaseAscii("get"))
- xSubmission = auto_ptr<CSubmission>(
- new CSubmissionGet( getAction(), aFragment));
- else
- {
- OSL_FAIL("Unsupported xforms submission method");
- return false;
- }
-
- xSubmission->setEncoding(getEncoding());
- CSubmission::SubmissionResult aResult = xSubmission->submit( xHandler );
-
- if (aResult == CSubmission::SUCCESS)
- {
- Reference< XDocument > aInstanceDoc = getInstanceDocument(xResult);
- aResult = xSubmission->replace(getReplace(), aInstanceDoc, Reference< XFrame >());
- }
-
- return ( aResult == CSubmission::SUCCESS );
-}
-
-Sequence<sal_Int8> Submission::getUnoTunnelID()
-{
- static cppu::OImplementationId aImplementationId;
- return aImplementationId.getImplementationId();
-}
-
-Submission* Submission::getSubmission(
- const Reference<XPropertySet>& xPropertySet )
-{
- Reference<XUnoTunnel> xTunnel( xPropertySet, UNO_QUERY );
- return xTunnel.is()
- ? reinterpret_cast<Submission*>(
- xTunnel->getSomething( getUnoTunnelID() ) )
- : NULL;
-}
-
-
-
-
-
-
-void Submission::liveCheck()
- throw( RuntimeException )
-{
- bool bValid = mxModel.is();
-
- if( ! bValid )
- throw RuntimeException();
-}
-
-Model* Submission::getModelImpl() const
-{
- Model* pModel = NULL;
- if( mxModel.is() )
- pModel = Model::getModel( mxModel );
- return pModel;
-}
-
-
-//
-// Property-Set implementation
-//
-
-#define HANDLE_ID 0
-#define HANDLE_Bind 1
-#define HANDLE_Ref 2
-#define HANDLE_Action 3
-#define HANDLE_Method 4
-#define HANDLE_Version 5
-#define HANDLE_Indent 6
-#define HANDLE_MediaType 7
-#define HANDLE_Encoding 8
-#define HANDLE_OmitXmlDeclaration 9
-#define HANDLE_Standalone 10
-#define HANDLE_CDataSectionElement 11
-#define HANDLE_Replace 12
-#define HANDLE_Separator 13
-#define HANDLE_IncludeNamespacePrefixes 14
-#define HANDLE_Model 15
-
-#define REGISTER_PROPERTY( property, type ) \
- registerProperty( PROPERTY( property, type ), \
- new DirectPropertyAccessor< Submission, type >( this, &Submission::set##property, &Submission::get##property ) );
-
-#define REGISTER_PROPERTY_BOOL( property ) \
- registerProperty( PROPERTY( property, bool ), \
- new BooleanPropertyAccessor< Submission, bool >( this, &Submission::set##property, &Submission::get##property ) );
-
-void Submission::initializePropertySet()
-{
- REGISTER_PROPERTY ( ID, OUString );
- REGISTER_PROPERTY ( Bind, OUString );
- REGISTER_PROPERTY ( Ref, OUString );
- REGISTER_PROPERTY ( Action, OUString );
- REGISTER_PROPERTY ( Method, OUString );
- REGISTER_PROPERTY ( Version, OUString );
- REGISTER_PROPERTY_BOOL( Indent );
- REGISTER_PROPERTY ( MediaType, OUString );
- REGISTER_PROPERTY ( Encoding, OUString );
- REGISTER_PROPERTY_BOOL( OmitXmlDeclaration );
- REGISTER_PROPERTY_BOOL( Standalone );
- REGISTER_PROPERTY ( CDataSectionElement, OUString );
- REGISTER_PROPERTY ( Replace, OUString );
- REGISTER_PROPERTY ( Separator, OUString );
- REGISTER_PROPERTY ( IncludeNamespacePrefixes, Sequence< OUString > );
- REGISTER_PROPERTY ( Model, Reference<XModel> );
-
- initializePropertyValueCache( HANDLE_Indent );
- initializePropertyValueCache( HANDLE_OmitXmlDeclaration );
- initializePropertyValueCache( HANDLE_Standalone );
-}
-
-sal_Bool SAL_CALL Submission::convertFastPropertyValue(
- Any& rConvertedValue, Any& rOldValue, sal_Int32 nHandle, const Any& rValue )
- throw ( IllegalArgumentException )
-{
- if ( nHandle == HANDLE_IncludeNamespacePrefixes )
- {
- // for convinience reasons (????), we accept a string which contains
- // a comma-separated list of namespace prefixes
- ::rtl::OUString sTokenList;
- if ( rValue >>= sTokenList )
- {
- std::vector< OUString > aPrefixes;
- sal_Int32 p = 0;
- while ( p >= 0 )
- aPrefixes.push_back( sTokenList.getToken( 0, ',', p ) );
-
- Sequence< ::rtl::OUString > aConvertedPrefixes( &aPrefixes[0], aPrefixes.size() );
- return PropertySetBase::convertFastPropertyValue( rConvertedValue, rOldValue, nHandle, makeAny( aConvertedPrefixes ) );
- }
- }
-
- return PropertySetBase::convertFastPropertyValue( rConvertedValue, rOldValue, nHandle, rValue );
-}
-
-OUString SAL_CALL Submission::getName()
- throw( RuntimeException )
-{
- return getID();
-}
-
-void SAL_CALL Submission::setName( const OUString& sID )
- throw( RuntimeException )
-{
- setID( sID );
-}
-
-
-
-sal_Int64 SAL_CALL Submission::getSomething(
- const Sequence<sal_Int8>& aId )
- throw( RuntimeException )
-{
- return ( aId == getUnoTunnelID() ) ? reinterpret_cast<sal_Int64>(this) : 0;
-}
-
-
-OUString lcl_message( const OUString& rID, const OUString& rText )
-{
- OUStringBuffer aMessage;
- aMessage.append( OUSTRING("XForms submission '") );
- aMessage.append( rID );
- aMessage.append( OUSTRING("' failed") );
- aMessage.append( rText );
- aMessage.append( OUSTRING(".") );
- return aMessage.makeStringAndClear();
-}
-
-void SAL_CALL Submission::submitWithInteraction(
- const Reference<XInteractionHandler>& _rxHandler )
- throw ( VetoException,
- WrappedTargetException,
- RuntimeException )
-{
- // as long as this class is not really threadsafe, we need to copy
- // the members we're interested in
- Reference< XModel > xModel( mxModel );
- ::rtl::OUString sID( msID );
-
- if ( !xModel.is() || !msID.getLength() )
- throw RuntimeException(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "This is not a valid submission object." ) ),
- *this
- );
-
- Model* pModel = Model::getModel( xModel );
- OSL_ENSURE( pModel != NULL, "illegal model?" );
-
- // #i36765# #i47248# warning on submission of illegal data
- // check for validity (and query user if invalid)
- bool bValid = pModel->isValid();
- if( ! bValid )
- {
- InvalidDataOnSubmitException aInvalidDataException(
- lcl_message(sID, OUSTRING(" due to invalid data") ), *this );
-
- if( _rxHandler.is() )
- {
- // labouriously create interaction request
- comphelper::OInteractionRequest* pRequest
- = new comphelper::OInteractionRequest(
- makeAny( aInvalidDataException ) );
- Reference<XInteractionRequest> xRequest = pRequest;
-
- comphelper::OInteractionApprove* pContinue
- = new comphelper::OInteractionApprove();
- Reference<XInteractionContinuation> xContinue = pContinue;
- pRequest->addContinuation( xContinue );
-
- comphelper::OInteractionDisapprove* pCancel
- = new comphelper::OInteractionDisapprove();
- Reference<XInteractionContinuation> xCancel = pCancel;
- pRequest->addContinuation( xCancel );
-
- // ask the handler...
- _rxHandler->handle( xRequest );
- OSL_ENSURE( pContinue->wasSelected() || pCancel->wasSelected(),
- "handler didn't select" );
-
- // and continue, if user chose 'continue'
- if( pContinue->wasSelected() )
- bValid = true;
- }
-
- // abort if invalid (and user didn't tell us to continue)
- if( ! bValid )
- throw aInvalidDataException;
- }
-
- // attempt submission
- bool bResult = false;
- try
- {
- bResult = doSubmit( _rxHandler );
- }
- catch( const VetoException& )
- {
- OSL_FAIL( "Model::submit: Hmm. How can a single submission have a veto right?" );
- // allowed to leave
- throw;
- }
- catch( const Exception& e )
- {
- // exception caught: re-throw as wrapped target exception
- throw WrappedTargetException(
- lcl_message( sID, OUSTRING(" due to exception being thrown") ),
- *this, makeAny( e ) );
- }
-
- if( bResult )
- {
- mxModel->rebuild();
- }
- else
- {
- // other failure: throw wrapped target exception, too.
- throw WrappedTargetException(
- lcl_message( sID, OUString() ), *this, Any() );
- }
-}
-
-void SAL_CALL Submission::submit( ) throw ( VetoException, WrappedTargetException, RuntimeException )
-{
- submitWithInteraction( NULL );
-}
-
-void SAL_CALL Submission::addSubmissionVetoListener( const Reference< XSubmissionVetoListener >& /*listener*/ ) throw (NoSupportException, RuntimeException)
-{
- // TODO
- throw NoSupportException();
-}
-
-void SAL_CALL Submission::removeSubmissionVetoListener( const Reference< XSubmissionVetoListener >& /*listener*/ ) throw (NoSupportException, RuntimeException)
-{
- // TODO
- throw NoSupportException();
-}
-
-static sal_Bool _isIgnorable(const Reference< XNode >& aNode)
-{
- // ignore whitespace-only textnodes
- if (aNode->getNodeType() == NodeType_TEXT_NODE)
- {
- OUString aTrimmedValue = aNode->getNodeValue().trim();
- if (aTrimmedValue.getLength() == 0) return sal_True;
- }
-
- return sal_False;
-}
-
-// recursively copy relevant nodes from A to B
-static void _cloneNodes(Model& aModel, const Reference< XNode >& dstParent, const Reference< XNode >& source, sal_Bool bRemoveWSNodes)
-{
- if (!source.is()) return;
-
- Reference< XNode > cur = source;
- Reference< XDocument > dstDoc = dstParent->getOwnerDocument();
- Reference< XNode > imported;
-
- if (cur.is())
- {
- // is this node relevant?
- MIP mip = aModel.queryMIP(cur);
- if(mip.isRelevant() && !(bRemoveWSNodes && _isIgnorable(cur)))
- {
- imported = dstDoc->importNode(cur, sal_False);
- imported = dstParent->appendChild(imported);
- // append source children to new imported parent
- for( cur = cur->getFirstChild(); cur.is(); cur = cur->getNextSibling() )
- _cloneNodes(aModel, imported, cur, bRemoveWSNodes);
- }
- }
-}
-Reference< XDocument > Submission::getInstanceDocument(const Reference< XXPathObject >& aObj)
-{
- using namespace com::sun::star::xml::xpath;
- // result
- Reference< XDocument > aDocument;
-
- if (aObj->getObjectType() == XPathObjectType_XPATH_NODESET)
- {
- Reference< XNodeList > aList = aObj->getNodeList();
- if (aList->getLength() > 0)
- aDocument = aList->item(0)->getOwnerDocument();
- }
- return aDocument;
-}
-
-Reference< XDocumentFragment > Submission::createSubmissionDocument(const Reference< XXPathObject >& aObj, sal_Bool bRemoveWSNodes)
-{
- using namespace com::sun::star::xml::xpath;
- Reference< XDocumentBuilder > aDocBuilder(m_aFactory->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.xml.dom.DocumentBuilder"))), UNO_QUERY);
- Reference< XDocument > aDocument = aDocBuilder->newDocument();
- Reference< XDocumentFragment > aFragment = aDocument->createDocumentFragment();
-
- //
- if (aObj->getObjectType() == XPathObjectType_XPATH_NODESET)
- {
- Reference< XNodeList > aList = aObj->getNodeList();
- Reference< XNode > aListItem;
- for (sal_Int32 i=0; i < aList->getLength(); i++)
- {
- aListItem = aList->item(i);
- if (aListItem->getNodeType()==NodeType_DOCUMENT_NODE)
- aListItem = Reference< XNode >(
- (Reference< XDocument >(aListItem, UNO_QUERY))->getDocumentElement(), UNO_QUERY);
- // copy relevant nodes from instance into fragment
- _cloneNodes(*getModelImpl(), Reference< XNode >(aFragment, UNO_QUERY), aListItem, bRemoveWSNodes);
- }
- }
- return aFragment;
-}
-
-// some forwarding: XPropertySet is implemented in our base class,
-// but also available as base of XSubmission
-Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL Submission::getPropertySetInfo( ) throw(RuntimeException)
-{
- return PropertySetBase::getPropertySetInfo();
-}
-void SAL_CALL Submission::setPropertyValue( const ::rtl::OUString& aPropertyName, const Any& aValue ) throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException)
-{
- PropertySetBase::setPropertyValue( aPropertyName, aValue );
-}
-Any SAL_CALL Submission::getPropertyValue( const ::rtl::OUString& PropertyName ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
-{
- return PropertySetBase::getPropertyValue( PropertyName );
-}
-void SAL_CALL Submission::addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
-{
- PropertySetBase::addPropertyChangeListener( aPropertyName, xListener );
-}
-void SAL_CALL Submission::removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
-{
- PropertySetBase::removePropertyChangeListener( aPropertyName, aListener );
-}
-void SAL_CALL Submission::addVetoableChangeListener( const ::rtl::OUString& PropertyName, const Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
-{
- PropertySetBase::addVetoableChangeListener( PropertyName, aListener );
-}
-void SAL_CALL Submission::removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
-{
- PropertySetBase::removeVetoableChangeListener( PropertyName, aListener );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */