/* -*- 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 .
*/
if ( sEntName.isEmpty() ) throw lang::IllegalArgumentException( u"Empty element name is provided!"_ustr, static_cast< ::cppu::OWeakObject* >(this),
2 );
// detect entry existence if ( !xNameAccess->hasByName( sEntName ) ) throw container::NoSuchElementException();
uno::Reference< uno::XInterface > xResult; if ( !xStorage->isStorageElement( sEntName ) )
{ // the object must be OOo embedded object, if it is not an exception must be thrown throw io::IOException(); // TODO:
} // the object must be based on storage
uno::Reference< embed::XStorage > xSubStorage =
xStorage->openStorageElement( sEntName, embed::ElementModes::READ );
// If the sequence is empty, fall back to the FileFormatVersion=6200 filter, Base only has that. if (!aObject.hasElements() && aMediaType == MIMETYPE_OASIS_OPENDOCUMENT_DATABASE_ASCII)
aObject = m_aConfigHelper.GetObjectPropsByMediaType(MIMETYPE_VND_SUN_XML_BASE_ASCII);
if ( !aObject.hasElements() ) throw io::IOException(); // unexpected mimetype of the storage
if ( sEntName.isEmpty() ) throw lang::IllegalArgumentException( u"Empty element name is provided!"_ustr, static_cast< ::cppu::OWeakObject* >(this),
2 );
// check if there is FilterName
OUString aFilterName = m_aConfigHelper.UpdateMediaDescriptorWithFilterName( aTempMedDescr, false );
uno::Reference< uno::XInterface > xResult;
// find document service name if ( aFilterName.isEmpty() )
{ // the object must be OOo embedded object, if it is not an exception must be thrown throw io::IOException(); // TODO:
}
uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByFilter( aFilterName ); if ( !aObject.hasElements() ) throw io::IOException(); // unexpected mimetype of the storage
if ( !xStorage.is() ) throw lang::IllegalArgumentException( u"No parent storage is provided!"_ustr,
uno::Reference< uno::XInterface >( static_cast< ::cppu::OWeakObject* >(this) ),
3 );
if ( sEntName.isEmpty() ) throw lang::IllegalArgumentException( u"Empty element name is provided!"_ustr,
uno::Reference< uno::XInterface >( static_cast< ::cppu::OWeakObject* >(this) ),
4 );
uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByClassID( aClassID ); if ( !aObject.hasElements() ) throw io::IOException(); // unexpected mimetype of the storage
uno::Reference< uno::XInterface > SAL_CALL OOoEmbeddedObjectFactory::createInstanceUserInit( const uno::Sequence< sal_Int8 >& aClassID, const OUString& /*aClassName*/, const uno::Reference< embed::XStorage >& xStorage, const OUString& sEntName,
sal_Int32 nEntryConnectionMode, const uno::Sequence< beans::PropertyValue >& lArguments, const uno::Sequence< beans::PropertyValue >& lObjArgs )
{ // the initialization is completely controlled by user if ( officecfg::Office::Common::Security::Scripting::DisableActiveContent::get() ) throw lang::NoSupportException(u"Active embedded content is disabled!"_ustr); if ( !xStorage.is() ) throw lang::IllegalArgumentException( u"No parent storage is provided!"_ustr,
uno::Reference< uno::XInterface >( static_cast< ::cppu::OWeakObject* >(this) ),
1 );
if ( sEntName.isEmpty() ) throw lang::IllegalArgumentException( u"Empty element name is provided!"_ustr,
uno::Reference< uno::XInterface >( static_cast< ::cppu::OWeakObject* >(this) ),
2 );
uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByClassID( aClassID ); if ( !aObject.hasElements() ) throw io::IOException(); // unexpected mimetype of the storage
uno::Sequence< beans::PropertyValue > aTempMedDescr( lArguments ); if ( nEntryConnectionMode == embed::EntryInitModes::MEDIA_DESCRIPTOR_INIT )
{
OUString aFilterName = m_aConfigHelper.UpdateMediaDescriptorWithFilterName( aTempMedDescr, aObject ); if ( aFilterName.isEmpty() ) // the object must be OOo embedded object, if it is not an exception must be thrown throw io::IOException(); // TODO:
}
// check if there is URL, URL must exist
OUString aURL; for (beans::PropertyValue const& prop : aTempMedDescr) if ( prop.Name == "URL" )
prop.Value >>= aURL;
if ( aURL.isEmpty() ) throw lang::IllegalArgumentException( u"No URL for the link is provided!"_ustr,
uno::Reference< uno::XInterface >( static_cast< ::cppu::OWeakObject* >(this) ),
3 );
if ( aFilterName.isEmpty() )
{ // the object must be OOo embedded object, if it is not an exception must be thrown throw io::IOException(); // TODO:
}
uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByFilter( aFilterName ); if ( !aObject.hasElements() ) throw io::IOException(); // unexpected mimetype of the storage
// the initialization is completely controlled by user if ( !xStorage.is() ) throw lang::IllegalArgumentException( u"No parent storage is provided!"_ustr,
uno::Reference< uno::XInterface >( static_cast< ::cppu::OWeakObject* >(this) ),
1 );
if ( sEntName.isEmpty() ) throw lang::IllegalArgumentException( u"Empty element name is provided!"_ustr,
uno::Reference< uno::XInterface >( static_cast< ::cppu::OWeakObject* >(this) ),
2 );
OUString aURL; for (beans::PropertyValue const& prop : aTempMedDescr) if ( prop.Name == "URL" )
prop.Value >>= aURL;
if ( aURL.isEmpty() ) throw lang::IllegalArgumentException( u"No URL for the link is provided!"_ustr,
uno::Reference< uno::XInterface >( static_cast< ::cppu::OWeakObject* >(this) ),
3 );
uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByClassID( aClassID ); if ( !aObject.hasElements() ) throw io::IOException(); // unexpected mimetype of the storage
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.