diff options
Diffstat (limited to 'xmlsecurity/source/framework/saxeventkeeperimpl.hxx')
-rw-r--r-- | xmlsecurity/source/framework/saxeventkeeperimpl.hxx | 365 |
1 files changed, 0 insertions, 365 deletions
diff --git a/xmlsecurity/source/framework/saxeventkeeperimpl.hxx b/xmlsecurity/source/framework/saxeventkeeperimpl.hxx deleted file mode 100644 index e2cb197a5..000000000 --- a/xmlsecurity/source/framework/saxeventkeeperimpl.hxx +++ /dev/null @@ -1,365 +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. - * - ************************************************************************/ - -#ifndef _SAXEVENTKEEPERIMPL_HXX -#define _SAXEVENTKEEPERIMPL_HXX - -#include <com/sun/star/xml/crypto/sax/XSecuritySAXEventKeeper.hpp> -#include <com/sun/star/xml/crypto/sax/XReferenceResolvedBroadcaster.hpp> -#include <com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeBroadcaster.hpp> -#include <com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeListener.hpp> -#include <com/sun/star/xml/csax/XCompressedDocumentHandler.hpp> -#include <com/sun/star/xml/wrapper/XXMLDocumentWrapper.hpp> -#include <com/sun/star/xml/sax/XDocumentHandler.hpp> -#include <com/sun/star/lang/XInitialization.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <cppuhelper/implbase6.hxx> - -#include "buffernode.hxx" -#include "elementmark.hxx" -#include "elementcollector.hxx" - -#ifndef INCLUDED_VECTOR -#include <vector> -#define INCLUDED_VECTOR -#endif - -class SAXEventKeeperImpl : public cppu::WeakImplHelper6 -< - com::sun::star::xml::crypto::sax::XSecuritySAXEventKeeper, - com::sun::star::xml::crypto::sax::XReferenceResolvedBroadcaster, - com::sun::star::xml::crypto::sax::XSAXEventKeeperStatusChangeBroadcaster, - com::sun::star::xml::sax::XDocumentHandler, - com::sun::star::lang::XInitialization, - com::sun::star::lang::XServiceInfo -> -/****** SAXEventKeeperImpl.hxx/CLASS SAXEventKeeperImpl *********************** - * - * NAME - * SAXEventKeeperImpl -- SAX events buffer controller - * - * FUNCTION - * Controls SAX events to be bufferred, and controls bufferred SAX events - * to be released. - * - * AUTHOR - * Michael Mi - * Email: michael.mi@sun.com - ******************************************************************************/ -{ -private: - /* - * the XMLDocumentWrapper component which maintains all bufferred SAX - * in DOM format. - */ - com::sun::star::uno::Reference< - com::sun::star::xml::wrapper::XXMLDocumentWrapper > - m_xXMLDocument; - - /* - * the document handler provided by the XMLDocumentWrapper component. - */ - com::sun::star::uno::Reference< - com::sun::star::xml::sax::XDocumentHandler > m_xDocumentHandler; - - /* - * the compressed document handler provided by the XMLDocumentWrapper - * component, the handler has more effient method definition that the - * normal document handler. - */ - com::sun::star::uno::Reference< - com::sun::star::xml::csax::XCompressedDocumentHandler > - m_xCompressedDocumentHandler; - - /* - * a listener which receives this SAXEventKeeper's status change - * notification. - * Based on the status changes, the listener can decide whether the - * SAXEventKeeper should chain on/chain off the SAX chain, or whether - * the SAXEventKeeper is useless any long. - */ - com::sun::star::uno::Reference< - com::sun::star::xml::crypto::sax::XSAXEventKeeperStatusChangeListener > - m_xSAXEventKeeperStatusChangeListener; - - /* - * the root node of the BufferNode tree. - * the BufferNode tree is used to keep track of all bufferred elements, - * it has the same structure with the document which maintains those - * elements physically. - */ - BufferNode* m_pRootBufferNode; - - /* - * the current active BufferNode. - * this is used to keep track the current location in the BufferNode tree, - * the next generated BufferNode will become a child BufferNode of it. - */ - BufferNode* m_pCurrentBufferNode; - - /* - * the next Id for a coming ElementMark. - * the variable is increased by 1 when an new ElementMark is generated, - * in this way, we can promise the Id of any ElementMark is unique. - */ - sal_Int32 m_nNextElementMarkId; - - /* - * maintains a collection of all ElementMarks. - */ - std::vector< const ElementMark* > m_vElementMarkBuffers; - - /* - * maintains a list of new ElementCollectors that will be created - * on the element represented by the next incoming startElement SAX - * event. - * The reason that such the m_vNewElementCollectors is necessary - * is: when an ElementCollector is asked to create, it can't be - * created completely at once, because the BufferNode it will be - * working on has not been created until the next startElement - * SAX event comes. - */ - std::vector< const ElementCollector* > m_vNewElementCollectors; - - /* - * maintains the new Blocker that will be created - * on the element represented by the next incoming startElement SAX - * event. - */ - ElementMark* m_pNewBlocker; - - /* - * the document handler to which all received SAX events will be - * forwarded. - */ - com::sun::star::uno::Reference< - com::sun::star::xml::sax::XDocumentHandler > m_xNextHandler; - - /* - * the current BufferNode which prevents the SAX events to be - * forwarded to the m_xNextHandler. - */ - BufferNode* m_pCurrentBlockingBufferNode; - - /* - * maintains a list of ElementMark that has been asked to release. - * Because during processing a request of releasing an ElementMark, - * another releasing ElementMark request can be invoked. To avoid - * reentering the same method, a such request only add that ElementMark - * into this ElementMark list, then all ElementMarks will be processed in - * order. - */ - std::vector< sal_Int32 > m_vReleasedElementMarkBuffers; - - /* - * a flag to indicate whether the ElementMark releasing process is runing. - * When a releasing request comes, the assigned ElementMark is added to - * the m_vReleasedElementMarkBuffers first, then this flag is checked. - * If the ElementMark releasing process is not running, then call that - * method. - */ - bool m_bIsReleasing; - - /* - * a flag to indicate whether it is the "Forwarding" mode now. - * A "Forwarding" mode means that all received SAX events are from the - * XMLDocumentWrapper component, instead of up-stream component in the - * SAX chain. - * The difference between "Forwarding" mode and normal mode is that: - * no SAX events need to be transferred to the XMLDocumentWrapper component - * again even if a buffer request happens. - */ - bool m_bIsForwarding; - - void setCurrentBufferNode(BufferNode* pBufferNode); - - BufferNode* addNewElementMarkBuffers(); - - ElementMark* findElementMarkBuffer(sal_Int32 nId) const; - - void removeElementMarkBuffer(sal_Int32 nId); - - rtl::OUString printBufferNode( - BufferNode* pBufferNode, sal_Int32 nIndent) const; - - com::sun::star::uno::Sequence< com::sun::star::uno::Reference< - com::sun::star::xml::wrapper::XXMLElementWrapper > > - collectChildWorkingElement(BufferNode* pBufferNode) const; - - void smashBufferNode( - BufferNode* pBufferNode, bool bClearRoot) const; - - BufferNode* findNextBlockingBufferNode( - BufferNode* pStartBufferNode) const; - - void diffuse(BufferNode* pBufferNode) const; - - void releaseElementMarkBuffer(); - - void markElementMarkBuffer(sal_Int32 nId); - - sal_Int32 createElementCollector( - sal_Int32 nSecurityId, - com::sun::star::xml::crypto::sax::ElementMarkPriority nPriority, - bool bModifyElement, - const com::sun::star::uno::Reference< - com::sun::star::xml::crypto::sax::XReferenceResolvedListener>& - xReferenceResolvedListener); - - sal_Int32 createBlocker(sal_Int32 nSecurityId); - -public: - SAXEventKeeperImpl(); - virtual ~SAXEventKeeperImpl(); - - /* XSAXEventKeeper */ - virtual sal_Int32 SAL_CALL addElementCollector( ) - throw (com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeElementCollector( sal_Int32 id ) - throw (com::sun::star::uno::RuntimeException); - virtual sal_Int32 SAL_CALL addBlocker( ) - throw (com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeBlocker( sal_Int32 id ) - throw (com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL isBlocking( ) - throw (com::sun::star::uno::RuntimeException); - virtual com::sun::star::uno::Reference< - com::sun::star::xml::wrapper::XXMLElementWrapper > SAL_CALL - getElement( sal_Int32 id ) - throw (com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setElement( - sal_Int32 id, - const com::sun::star::uno::Reference< - com::sun::star::xml::wrapper::XXMLElementWrapper >& - aElement ) - throw (com::sun::star::uno::RuntimeException); - virtual com::sun::star::uno::Reference< - com::sun::star::xml::sax::XDocumentHandler > SAL_CALL - setNextHandler( const com::sun::star::uno::Reference< - com::sun::star::xml::sax::XDocumentHandler >& xNewHandler ) - throw (com::sun::star::uno::RuntimeException); - virtual rtl::OUString SAL_CALL printBufferNodeTree() - throw (com::sun::star::uno::RuntimeException); - virtual com::sun::star::uno::Reference< - com::sun::star::xml::wrapper::XXMLElementWrapper > SAL_CALL - getCurrentBlockingNode() - throw (com::sun::star::uno::RuntimeException); - - /* XSecuritySAXEventKeeper */ - virtual sal_Int32 SAL_CALL addSecurityElementCollector( - com::sun::star::xml::crypto::sax::ElementMarkPriority priority, - sal_Bool modifyElement ) - throw (com::sun::star::uno::RuntimeException); - virtual sal_Int32 SAL_CALL cloneElementCollector( - sal_Int32 referenceId, - com::sun::star::xml::crypto::sax::ElementMarkPriority priority ) - throw (com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setSecurityId( sal_Int32 id, sal_Int32 securityId ) - throw (com::sun::star::uno::RuntimeException); - - /* XReferenceResolvedBroadcaster */ - virtual void SAL_CALL addReferenceResolvedListener( - sal_Int32 referenceId, - const com::sun::star::uno::Reference< - com::sun::star::xml::crypto::sax::XReferenceResolvedListener >& - listener ) - throw (com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeReferenceResolvedListener( - sal_Int32 referenceId, - const com::sun::star::uno::Reference< - com::sun::star::xml::crypto::sax::XReferenceResolvedListener >& - listener ) - throw (com::sun::star::uno::RuntimeException); - - /* XSAXEventKeeperStatusChangeBroadcaster */ - virtual void SAL_CALL addSAXEventKeeperStatusChangeListener( - const com::sun::star::uno::Reference< - com::sun::star::xml::crypto::sax::XSAXEventKeeperStatusChangeListener >& - listener ) - throw (com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeSAXEventKeeperStatusChangeListener( - const com::sun::star::uno::Reference< - com::sun::star::xml::crypto::sax::XSAXEventKeeperStatusChangeListener >& - listener ) - throw (com::sun::star::uno::RuntimeException); - - /* XDocumentHandler */ - virtual void SAL_CALL startDocument( ) - throw (com::sun::star::xml::sax::SAXException, com::sun::star::uno::RuntimeException); - virtual void SAL_CALL endDocument( ) - throw (com::sun::star::xml::sax::SAXException, com::sun::star::uno::RuntimeException); - virtual void SAL_CALL startElement( - const rtl::OUString& aName, - const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& - xAttribs ) - throw (com::sun::star::xml::sax::SAXException, com::sun::star::uno::RuntimeException); - virtual void SAL_CALL endElement( const rtl::OUString& aName ) - throw (com::sun::star::xml::sax::SAXException, com::sun::star::uno::RuntimeException); - virtual void SAL_CALL characters( const rtl::OUString& aChars ) - throw (com::sun::star::xml::sax::SAXException, com::sun::star::uno::RuntimeException); - virtual void SAL_CALL ignorableWhitespace( const rtl::OUString& aWhitespaces ) - throw (com::sun::star::xml::sax::SAXException, com::sun::star::uno::RuntimeException); - virtual void SAL_CALL processingInstruction( - const rtl::OUString& aTarget, const rtl::OUString& aData ) - throw (com::sun::star::xml::sax::SAXException, com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setDocumentLocator( - const com::sun::star::uno::Reference< com::sun::star::xml::sax::XLocator >& xLocator ) - throw (com::sun::star::xml::sax::SAXException, com::sun::star::uno::RuntimeException); - - /* XInitialization */ - virtual void SAL_CALL initialize( - const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& aArguments ) - throw (com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException); - - /* XServiceInfo */ - virtual rtl::OUString SAL_CALL getImplementationName( ) - throw (com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const rtl::OUString& ServiceName ) - throw (com::sun::star::uno::RuntimeException); - virtual com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames( ) - throw (com::sun::star::uno::RuntimeException); -}; - -rtl::OUString SAXEventKeeperImpl_getImplementationName() - throw ( com::sun::star::uno::RuntimeException ); - -sal_Bool SAL_CALL SAXEventKeeperImpl_supportsService( const rtl::OUString& ServiceName ) - throw ( com::sun::star::uno::RuntimeException ); - -com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL SAXEventKeeperImpl_getSupportedServiceNames( ) - throw ( com::sun::star::uno::RuntimeException ); - -com::sun::star::uno::Reference< com::sun::star::uno::XInterface > -SAL_CALL SAXEventKeeperImpl_createInstance( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > & rSMgr) - throw ( com::sun::star::uno::Exception ); - -#endif - - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |