| /************************************************************** |
| * |
| * 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. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_ucb.hxx" |
| #include <osl/diagnose.h> |
| #include <com/sun/star/uno/Type.hxx> |
| #include <com/sun/star/uno/Sequence.hxx> |
| #include <com/sun/star/uno/Reference.hxx> |
| #include <com/sun/star/beans/PropertyAttribute.hpp> |
| #include <com/sun/star/ucb/CrossReference.hpp> |
| #include <com/sun/star/util/DateTime.hpp> |
| #include <com/sun/star/ucb/DocumentHeaderField.hpp> |
| #include <com/sun/star/ucb/RecipientInfo.hpp> |
| #include <com/sun/star/ucb/RuleSet.hpp> |
| #include <com/sun/star/ucb/SendInfo.hpp> |
| #include <com/sun/star/ucb/SendMediaTypes.hpp> |
| #include <com/sun/star/ucb/XDataContainer.hpp> |
| #include "ucbprops.hxx" |
| |
| using namespace rtl; |
| using namespace com::sun::star::beans; |
| using namespace com::sun::star::lang; |
| using namespace com::sun::star::ucb; |
| using namespace com::sun::star::uno; |
| using namespace com::sun::star::util; |
| |
| //========================================================================= |
| // |
| // struct PropertyTableEntry |
| // |
| //========================================================================= |
| |
| struct PropertyTableEntry |
| { |
| const char* pName; |
| sal_Int32 nHandle; |
| sal_Int16 nAttributes; |
| const com::sun::star::uno::Type& (*pGetCppuType)(); |
| }; |
| |
| ////////////////////////////////////////////////////////////////////////// |
| // |
| // CPPU type access functions. |
| // |
| ////////////////////////////////////////////////////////////////////////// |
| |
| static const com::sun::star::uno::Type& OUString_getCppuType() |
| { |
| return getCppuType( static_cast< const rtl::OUString * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& sal_uInt16_getCppuType() |
| { |
| // ! uInt -> Int, because of Java !!! |
| return getCppuType( static_cast< const sal_Int16 * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& sal_uInt32_getCppuType() |
| { |
| // ! uInt -> Int, because of Java !!! |
| return getCppuType( static_cast< const sal_Int32 * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& sal_uInt64_getCppuType() |
| { |
| // ! uInt -> Int, because of Java !!! |
| return getCppuType( static_cast< const sal_Int64 * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& enum_getCppuType() |
| { |
| // ! enum -> Int, because of Java !!! |
| return getCppuType( static_cast< const sal_Int16 * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& sal_Bool_getCppuType() |
| { |
| return getCppuBooleanType(); |
| } |
| |
| static const com::sun::star::uno::Type& byte_getCppuType() |
| { |
| return getCppuType( static_cast< const sal_Int8 * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& Sequence_CrossReference_getCppuType() |
| { |
| return getCppuType( |
| static_cast< com::sun::star::uno::Sequence< |
| com::sun::star::ucb::CrossReference > * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& DateTime_getCppuType() |
| { |
| return getCppuType( |
| static_cast< com::sun::star::util::DateTime * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& Sequence_byte_getCppuType() |
| { |
| return getCppuType( |
| static_cast< com::sun::star::uno::Sequence< sal_Int8 > * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& Sequence_DocumentHeaderField_getCppuType() |
| { |
| return getCppuType( |
| static_cast< com::sun::star::uno::Sequence< |
| com::sun::star::ucb::DocumentHeaderField > * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& XDataContainer_getCppuType() |
| { |
| return getCppuType( |
| static_cast< com::sun::star::uno::Reference< |
| com::sun::star::ucb::XDataContainer > * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& Sequence_RecipientInfo_getCppuType() |
| { |
| return getCppuType( |
| static_cast< com::sun::star::uno::Sequence< |
| com::sun::star::ucb::RecipientInfo > * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& RuleSet_getCppuType() |
| { |
| return getCppuType( |
| static_cast< com::sun::star::ucb::RuleSet * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& Sequence_SendInfo_getCppuType() |
| { |
| return getCppuType( |
| static_cast< com::sun::star::uno::Sequence< |
| com::sun::star::ucb::SendInfo > * >( 0 ) ); |
| } |
| |
| static const com::sun::star::uno::Type& Sequence_SendMediaTypes_getCppuType() |
| { |
| return getCppuType( |
| static_cast< com::sun::star::uno::Sequence< |
| com::sun::star::ucb::SendMediaTypes > * >( 0 ) ); |
| } |
| |
| ////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
| // A table with all well-known UCB properties. |
| ////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
| |
| #define ATTR_DEFAULT ( PropertyAttribute::BOUND | PropertyAttribute::MAYBEVOID | PropertyAttribute::MAYBEDEFAULT ) |
| |
| static PropertyTableEntry __aPropertyTable[] = |
| { |
| { "Account", -1 /* WID_ACCOUNT */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "AutoUpdateInterval", -1 /* WID_AUTOUPDATE_INTERVAL */, ATTR_DEFAULT, &sal_uInt32_getCppuType }, |
| { "ConfirmEmpty", -1 /* WID_TRASHCAN_FLAG_CONFIRMEMPTY */, |
| ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "ConnectionLimit", -1 /* WID_HTTP_CONNECTION_LIMIT */, ATTR_DEFAULT, &byte_getCppuType }, |
| { "ConnectionMode", -1 /* WID_CONNECTION_MODE */, ATTR_DEFAULT, &enum_getCppuType }, |
| { "ContentCountLimit", -1 /* WID_SHOW_MSGS_TIMELIMIT */, ATTR_DEFAULT, &sal_uInt16_getCppuType }, |
| { "ContentType", -1 /* WID_CONTENT_TYPE */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "Cookie", -1 /* WID_HTTP_COOKIE */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "CrossReferences", -1 /* WID_NEWS_XREFLIST */, ATTR_DEFAULT, &Sequence_CrossReference_getCppuType }, |
| { "DateCreated", -1 /* WID_DATE_CREATED */, ATTR_DEFAULT, &DateTime_getCppuType }, |
| { "DateModified", -1 /* WID_DATE_MODIFIED */, ATTR_DEFAULT, &DateTime_getCppuType }, |
| { "DeleteOnServer", -1 /* WID_DELETE_ON_SERVER */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "DocumentBody", -1 /* WID_DOCUMENT_BODY */, ATTR_DEFAULT, &Sequence_byte_getCppuType }, |
| { "DocumentCount", -1 /* WID_TOTALCONTENTCOUNT */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_uInt32_getCppuType }, |
| { "DocumentCountMarked", |
| -1 /* WID_MARKED_DOCUMENT_COUNT */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_uInt32_getCppuType }, |
| { "DocumentHeader", -1 /* WID_DOCUMENT_HEADER */, ATTR_DEFAULT, &Sequence_DocumentHeaderField_getCppuType }, |
| { "DocumentStoreMode", -1 /* WID_MESSAGE_STOREMODE */, ATTR_DEFAULT, &enum_getCppuType }, |
| { "DocumentViewMode", -1 /* WID_MESSAGEVIEW_MODE */, ATTR_DEFAULT, &enum_getCppuType }, |
| { "FTPAccount", -1 /* WID_FTP_ACCOUNT */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "Flags", -1 /* WID_FSYS_FLAGS */, ATTR_DEFAULT, &sal_uInt32_getCppuType }, |
| { "FolderCount", -1 /* WID_FOLDER_COUNT */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_uInt32_getCppuType }, |
| { "FolderViewMode", -1 /* WID_FOLDERVIEW_MODE */, ATTR_DEFAULT, &enum_getCppuType }, |
| { "FreeSpace", -1 /* WID_FSYS_DISKSPACE_LEFT */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_uInt64_getCppuType }, |
| { "HasDocuments", -1 /* WID_FLAG_HAS_MESSAGES */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_Bool_getCppuType }, |
| { "HasFolders", -1 /* WID_FLAG_HAS_FOLDER */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_Bool_getCppuType }, |
| { "IsAutoDelete", -1 /* WID_TRASHCAN_FLAG_AUTODELETE */, |
| ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "IsAutoUpdate", -1 /* WID_UPDATE_ENABLED */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "IsDocument", -1 /* WID_FLAG_IS_MESSAGE */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_Bool_getCppuType }, |
| { "IsFolder", -1 /* WID_FLAG_IS_FOLDER */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_Bool_getCppuType }, |
| { "IsKeepExpired", -1 /* WID_HTTP_KEEP_EXPIRED */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "IsLimitedContentCount", |
| -1 /* WID_SHOW_MSGS_HAS_TIMELIMIT */, |
| ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "IsMarked", -1 /* WID_IS_MARKED */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "IsRead", -1 /* WID_IS_READ */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "IsReadOnly", -1 /* WID_FLAG_READONLY */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "IsSubscribed", -1 /* WID_FLAG_SUBSCRIBED */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| // { "IsThreaded", -1 /* WID_THREADED */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "IsTimeLimitedStore", -1 /* WID_STORE_MSGS_HAS_TIMELIMIT */, |
| ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "Keywords", -1 /* WID_KEYWORDS */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "LocalBase", -1 /* WID_LOCALBASE */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "MessageBCC", -1 /* WID_BCC */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "MessageBody", -1 /* WID_MESSAGEBODY */, ATTR_DEFAULT, &XDataContainer_getCppuType }, |
| { "MessageCC", -1 /* WID_CC */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "MessageFrom", -1 /* WID_FROM */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "MessageId", -1 /* WID_MESSAGE_ID */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "MessageInReplyTo", -1 /* WID_IN_REPLY_TO */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "MessageReplyTo", -1 /* WID_REPLY_TO */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "MessageTo", -1 /* WID_TO */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "NewsGroups", -1 /* WID_NEWSGROUPS */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "NoCacheList", -1 /* WID_HTTP_NOCACHE_LIST */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "Origin", -1 /* WID_TRASH_ORIGIN */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &OUString_getCppuType }, |
| { "OutgoingMessageRecipients", |
| -1 /* WID_RECIPIENTLIST */, ATTR_DEFAULT, &Sequence_RecipientInfo_getCppuType }, |
| { "OutgoingMessageState", |
| -1 /* WID_OUTMSGINTERNALSTATE */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &enum_getCppuType }, |
| { "OutgoingMessageViewMode", |
| -1 /* WID_SENTMESSAGEVIEW_MODE */, |
| ATTR_DEFAULT, &enum_getCppuType }, |
| // { "OwnURL", -1 /* WID_OWN_URL */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "Password", -1 /* WID_PASSWORD */, ATTR_DEFAULT, &OUString_getCppuType }, |
| // { "PresentationURL", -1 /* WID_REAL_URL */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| // &OUString_getCppuType }, |
| { "Priority", -1 /* WID_PRIORITY */, ATTR_DEFAULT, &enum_getCppuType }, |
| { "References", -1 /* WID_REFERENCES */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "Referer", -1 /* WID_HTTP_REFERER */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "Rules", -1 /* WID_RULES */, ATTR_DEFAULT, &RuleSet_getCppuType }, |
| { "SearchCriteria", -1 /* WID_SEARCH_CRITERIA */, ATTR_DEFAULT, &RuleSet_getCppuType }, |
| { "SearchIndirections", -1 /* WID_SEARCH_INDIRECTIONS */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "SearchLocations", -1 /* WID_SEARCH_LOCATIONS */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "SearchRecursive", -1 /* WID_SEARCH_RECURSIVE */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "SeenCount", -1 /* WID_SEENCONTENTCOUNT */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_uInt32_getCppuType }, |
| { "SendCopyTarget", -1 /* WID_SEND_COPY_TARGET */, ATTR_DEFAULT, &Sequence_SendInfo_getCppuType }, |
| { "SendFormats", -1 /* WID_SEND_FORMATS */, ATTR_DEFAULT, &Sequence_SendMediaTypes_getCppuType }, |
| { "SendFroms", -1 /* WID_SEND_FROM_DEFAULT */, ATTR_DEFAULT, &Sequence_SendInfo_getCppuType }, |
| { "SendPasswords", -1 /* WID_SEND_PASSWORD */, ATTR_DEFAULT, &Sequence_SendInfo_getCppuType }, |
| { "SendProtocolPrivate",-1 /* WID_SEND_PRIVATE_PROT_ID */, ATTR_DEFAULT, &sal_uInt16_getCppuType }, |
| { "SendProtocolPublic", -1 /* WID_SEND_PUBLIC_PROT_ID */, ATTR_DEFAULT, &sal_uInt16_getCppuType }, |
| { "SendReplyTos", -1 /* WID_SEND_REPLY_TO_DEFAULT */, ATTR_DEFAULT, &Sequence_SendInfo_getCppuType }, |
| { "SendServerNames", -1 /* WID_SEND_SERVERNAME */, ATTR_DEFAULT, &Sequence_SendInfo_getCppuType }, |
| { "SendUserNames", -1 /* WID_SEND_USERNAME */, ATTR_DEFAULT, &Sequence_SendInfo_getCppuType }, |
| { "SendVIMPostOfficePath", |
| -1 /* WID_SEND_VIM_POPATH */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "ServerBase", -1 /* WID_SERVERBASE */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "ServerName", -1 /* WID_SERVERNAME */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "ServerPort", -1 /* WID_SERVERPORT */, ATTR_DEFAULT, &sal_uInt16_getCppuType }, |
| { "Size", -1 /* WID_DOCUMENT_SIZE */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_uInt64_getCppuType }, |
| { "SizeLimit", -1 /* WID_SIZE_LIMIT */, ATTR_DEFAULT, &sal_uInt64_getCppuType }, |
| { "SubscribedCount", -1 /* WID_SUBSCRNEWSGROUPCOUNT */, ATTR_DEFAULT | PropertyAttribute::READONLY, |
| &sal_uInt32_getCppuType }, |
| { "SynchronizePolicy", -1 /* WID_WHO_IS_MASTER */, ATTR_DEFAULT, &enum_getCppuType }, |
| { "TargetFrames", -1 /* WID_TARGET_FRAMES */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "TargetURL", -1 /* WID_TARGET_URL */, ATTR_DEFAULT, &OUString_getCppuType }, |
| // { "ThreadingInfo", -1 /* WID_THREADING */, ATTR_DEFAULT, &Sequence_ThreadingInfo_getCppuType }, |
| { "TimeLimitStore", -1 /* WID_STORE_MSGS_TIMELIMIT */, ATTR_DEFAULT, &sal_uInt16_getCppuType }, |
| { "Title", -1 /* WID_TITLE */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "UpdateOnOpen", -1 /* WID_FLAG_UPDATE_ON_OPEN */, ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "UseOutBoxPrivateProtocolSettings", |
| -1 /* WID_SEND_PRIVATE_OUTBOXPROPS */, |
| ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "UseOutBoxPublicProtocolSettings", |
| -1 /* WID_SEND_PUBLIC_OUTBOXPROPS */, |
| ATTR_DEFAULT, &sal_Bool_getCppuType }, |
| { "UserName", -1 /* WID_USERNAME */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "UserSortCriterium", -1 /* WID_USER_SORT_CRITERIUM */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "VIMPostOfficePath", -1 /* WID_VIM_POPATH */, ATTR_DEFAULT, &OUString_getCppuType }, |
| { "VerificationMode", -1 /* WID_HTTP_VERIFY_MODE */, ATTR_DEFAULT, &enum_getCppuType }, |
| |
| ////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
| // EOT. |
| ////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
| |
| { 0, 0, 0, 0 } |
| }; |
| |
| //========================================================================= |
| //========================================================================= |
| // |
| // UcbPropertiesManager Implementation. |
| // |
| //========================================================================= |
| //========================================================================= |
| |
| UcbPropertiesManager::UcbPropertiesManager( |
| const Reference< XMultiServiceFactory >& ) |
| : m_pProps( 0 ) |
| { |
| } |
| |
| //========================================================================= |
| // virtual |
| UcbPropertiesManager::~UcbPropertiesManager() |
| { |
| delete m_pProps; |
| } |
| |
| //========================================================================= |
| // |
| // XInterface methods. |
| // |
| //========================================================================= |
| |
| XINTERFACE_IMPL_3( UcbPropertiesManager, |
| XTypeProvider, |
| XServiceInfo, |
| XPropertySetInfo ); |
| |
| //========================================================================= |
| // |
| // XTypeProvider methods. |
| // |
| //========================================================================= |
| |
| XTYPEPROVIDER_IMPL_3( UcbPropertiesManager, |
| XTypeProvider, |
| XServiceInfo, |
| XPropertySetInfo ); |
| |
| //========================================================================= |
| // |
| // XServiceInfo methods. |
| // |
| //========================================================================= |
| |
| XSERVICEINFO_IMPL_1( UcbPropertiesManager, |
| OUString::createFromAscii( |
| "com.sun.star.comp.ucb.UcbPropertiesManager" ), |
| OUString::createFromAscii( |
| PROPERTIES_MANAGER_SERVICE_NAME ) ); |
| |
| //========================================================================= |
| // |
| // Service factory implementation. |
| // |
| //========================================================================= |
| |
| ONE_INSTANCE_SERVICE_FACTORY_IMPL( UcbPropertiesManager ); |
| |
| //========================================================================= |
| // |
| // XPropertySetInfo methods. |
| // |
| //========================================================================= |
| |
| // virtual |
| Sequence< Property > SAL_CALL UcbPropertiesManager::getProperties() |
| throw( RuntimeException ) |
| { |
| osl::Guard< osl::Mutex > aGuard( m_aMutex ); |
| |
| if ( !m_pProps ) |
| { |
| m_pProps = new Sequence< Property >( 128 ); |
| Property* pProps = m_pProps->getArray(); |
| sal_Int32 nPos = 0; |
| sal_Int32 nSize = m_pProps->getLength(); |
| |
| ////////////////////////////////////////////////////////////////// |
| // Get info for well-known properties. |
| ////////////////////////////////////////////////////////////////// |
| |
| const PropertyTableEntry* pCurr = &__aPropertyTable[ 0 ]; |
| while ( pCurr->pName ) |
| { |
| if ( nSize <= nPos ) |
| { |
| OSL_ENSURE( sal_False, |
| "UcbPropertiesManager::getProperties - " |
| "Initial size of property sequence too small!" ); |
| |
| m_pProps->realloc( 128 ); |
| nSize += 128; |
| } |
| |
| Property& rProp = pProps[ nPos ]; |
| |
| rProp.Name = OUString::createFromAscii( pCurr->pName ); |
| rProp.Handle = pCurr->nHandle; |
| rProp.Type = pCurr->pGetCppuType(); |
| rProp.Attributes = pCurr->nAttributes; |
| |
| nPos++; |
| pCurr++; |
| } |
| |
| if ( nPos > 0 ) |
| { |
| m_pProps->realloc( nPos ); |
| nSize = m_pProps->getLength(); |
| } |
| } |
| return *m_pProps; |
| } |
| |
| //========================================================================= |
| // virtual |
| Property SAL_CALL UcbPropertiesManager::getPropertyByName( const OUString& aName ) |
| throw( UnknownPropertyException, RuntimeException ) |
| { |
| Property aProp; |
| if ( queryProperty( aName, aProp ) ) |
| return aProp; |
| |
| throw UnknownPropertyException(); |
| } |
| |
| //========================================================================= |
| // virtual |
| sal_Bool SAL_CALL UcbPropertiesManager::hasPropertyByName( const OUString& Name ) |
| throw( RuntimeException ) |
| { |
| Property aProp; |
| return queryProperty( Name, aProp ); |
| } |
| |
| //========================================================================= |
| // |
| // Non-Interface methods. |
| // |
| //========================================================================= |
| |
| sal_Bool UcbPropertiesManager::queryProperty( |
| const OUString& rName, Property& rProp ) |
| { |
| osl::Guard< osl::Mutex > aGuard( m_aMutex ); |
| |
| getProperties(); |
| |
| const Property* pProps = m_pProps->getConstArray(); |
| sal_Int32 nCount = m_pProps->getLength(); |
| for ( sal_Int32 n = 0; n < nCount; ++n ) |
| { |
| const Property& rCurrProp = pProps[ n ]; |
| if ( rCurrProp.Name == rName ) |
| { |
| rProp = rCurrProp; |
| return sal_True; |
| } |
| } |
| |
| return sal_False; |
| } |
| |