diff options
Diffstat (limited to 'stoc/source/uriproc')
-rw-r--r-- | stoc/source/uriproc/ExternalUriReferenceTranslator.cxx | 243 | ||||
-rw-r--r-- | stoc/source/uriproc/ExternalUriReferenceTranslator.hxx | 62 | ||||
-rw-r--r-- | stoc/source/uriproc/UriReference.cxx | 209 | ||||
-rw-r--r-- | stoc/source/uriproc/UriReference.hxx | 111 | ||||
-rw-r--r-- | stoc/source/uriproc/UriReferenceFactory.cxx | 727 | ||||
-rw-r--r-- | stoc/source/uriproc/UriReferenceFactory.hxx | 62 | ||||
-rw-r--r-- | stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTexpand.cxx | 271 | ||||
-rw-r--r-- | stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTexpand.hxx | 65 | ||||
-rw-r--r-- | stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTscript.cxx | 488 | ||||
-rw-r--r-- | stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTscript.hxx | 64 | ||||
-rw-r--r-- | stoc/source/uriproc/VndSunStarPkgUrlReferenceFactory.cxx | 170 | ||||
-rw-r--r-- | stoc/source/uriproc/VndSunStarPkgUrlReferenceFactory.hxx | 62 | ||||
-rw-r--r-- | stoc/source/uriproc/makefile.mk | 53 | ||||
-rw-r--r-- | stoc/source/uriproc/supportsService.cxx | 54 | ||||
-rw-r--r-- | stoc/source/uriproc/supportsService.hxx | 46 |
15 files changed, 0 insertions, 2687 deletions
diff --git a/stoc/source/uriproc/ExternalUriReferenceTranslator.cxx b/stoc/source/uriproc/ExternalUriReferenceTranslator.cxx deleted file mode 100644 index 08722a9f5..000000000 --- a/stoc/source/uriproc/ExternalUriReferenceTranslator.cxx +++ /dev/null @@ -1,243 +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_stoc.hxx" - -#include "stocservices.hxx" - -#include "supportsService.hxx" - -#include "com/sun/star/lang/XServiceInfo.hpp" -#include "com/sun/star/uno/Exception.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/RuntimeException.hpp" -#include "com/sun/star/uno/Sequence.hxx" -#include "com/sun/star/uno/XComponentContext.hpp" -#include "com/sun/star/uno/XInterface.hpp" -#include "com/sun/star/uri/XExternalUriReferenceTranslator.hpp" -#include "cppuhelper/implbase2.hxx" -#include "cppuhelper/weak.hxx" -#include "osl/thread.h" -#include "rtl/string.h" -#include "rtl/textenc.h" -#include "rtl/uri.h" -#include "rtl/uri.hxx" -#include "rtl/ustrbuf.hxx" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -#include <new> - -namespace css = com::sun::star; - -namespace { - -class Translator: public cppu::WeakImplHelper2< - css::lang::XServiceInfo, css::uri::XExternalUriReferenceTranslator > -{ -public: - explicit Translator( - css::uno::Reference< css::uno::XComponentContext > const & context): - m_context(context) {} - - virtual rtl::OUString SAL_CALL getImplementationName() - throw (css::uno::RuntimeException); - - virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & serviceName) - throw (css::uno::RuntimeException); - - virtual css::uno::Sequence< rtl::OUString > SAL_CALL - getSupportedServiceNames() throw (css::uno::RuntimeException); - - virtual rtl::OUString SAL_CALL - translateToInternal(rtl::OUString const & externalUriReference) - throw (css::uno::RuntimeException); - - virtual rtl::OUString SAL_CALL - translateToExternal(rtl::OUString const & internalUriReference) - throw (css::uno::RuntimeException); - -private: - Translator(Translator &); // not implemented - void operator =(Translator); // not implemented - - virtual ~Translator() {} - - css::uno::Reference< css::uno::XComponentContext > m_context; -}; - -rtl::OUString Translator::getImplementationName() - throw (css::uno::RuntimeException) -{ - return - stoc_services::ExternalUriReferenceTranslator::getImplementationName(); -} - -sal_Bool Translator::supportsService(rtl::OUString const & serviceName) - throw (css::uno::RuntimeException) -{ - return stoc::uriproc::supportsService( - getSupportedServiceNames(), serviceName); -} - -css::uno::Sequence< rtl::OUString > Translator::getSupportedServiceNames() - throw (css::uno::RuntimeException) -{ - return stoc_services::ExternalUriReferenceTranslator:: - getSupportedServiceNames(); -} - -rtl::OUString Translator::translateToInternal( - rtl::OUString const & externalUriReference) - throw (css::uno::RuntimeException) -{ - if (!externalUriReference.matchIgnoreAsciiCaseAsciiL( - RTL_CONSTASCII_STRINGPARAM("file:/"))) - { - return externalUriReference; - } - sal_Int32 i = RTL_CONSTASCII_LENGTH("file:"); - rtl::OUStringBuffer buf; - buf.append(externalUriReference.getStr(), i); - // Some environments (e.g., Java) produce illegal file URLs without an - // authority part; treat them as having an empty authority part: - if (!externalUriReference.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("//"), i)) - { - buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("//")); - } - rtl_TextEncoding encoding = osl_getThreadTextEncoding(); - for (bool path = true;;) { - sal_Int32 j = i; - while (j != externalUriReference.getLength() - && externalUriReference[j] != '#' - && (!path || externalUriReference[j] != '/')) - { - ++j; - } - if (j != i) { - rtl::OUString seg( - rtl::Uri::encode( - rtl::Uri::decode( - externalUriReference.copy(i, j - i), - rtl_UriDecodeStrict, encoding), - rtl_UriCharClassPchar, rtl_UriEncodeStrict, - RTL_TEXTENCODING_UTF8)); - if (seg.getLength() == 0) { - return rtl::OUString(); - } - buf.append(seg); - } - if (j == externalUriReference.getLength()) { - break; - } - buf.append(externalUriReference[j]); - path = externalUriReference[j] == '/'; - i = j + 1; - } - return buf.makeStringAndClear(); -} - -rtl::OUString Translator::translateToExternal( - rtl::OUString const & internalUriReference) - throw (css::uno::RuntimeException) -{ - if (!internalUriReference.matchIgnoreAsciiCaseAsciiL( - RTL_CONSTASCII_STRINGPARAM("file://"))) - { - return internalUriReference; - } - sal_Int32 i = RTL_CONSTASCII_LENGTH("file://"); - rtl::OUStringBuffer buf; - buf.append(internalUriReference.getStr(), i); - rtl_TextEncoding encoding = osl_getThreadTextEncoding(); - for (bool path = true;;) { - sal_Int32 j = i; - while (j != internalUriReference.getLength() - && internalUriReference[j] != '#' - && (!path || internalUriReference[j] != '/')) - { - ++j; - } - if (j != i) { - // Use rtl_UriDecodeToIuri -> rtl_UriEncodeStrictKeepEscapes instead - // of rtl_UriDecodeStrict -> rtl_UriEncodeStrict, so that spurious - // non--UTF-8 octets like "%FE" are copied verbatim: - rtl::OUString seg( - rtl::Uri::encode( - rtl::Uri::decode( - internalUriReference.copy(i, j - i), - rtl_UriDecodeToIuri, RTL_TEXTENCODING_UTF8), - rtl_UriCharClassPchar, rtl_UriEncodeStrictKeepEscapes, - encoding)); - if (seg.getLength() == 0) { - return rtl::OUString(); - } - buf.append(seg); - } - if (j == internalUriReference.getLength()) { - break; - } - buf.append(internalUriReference[j]); - path = internalUriReference[j] == '/'; - i = j + 1; - } - return buf.makeStringAndClear(); -} - -} - -namespace stoc_services { namespace ExternalUriReferenceTranslator { - -css::uno::Reference< css::uno::XInterface > create( - css::uno::Reference< css::uno::XComponentContext > const & context) - SAL_THROW((css::uno::Exception)) -{ - try { - return static_cast< cppu::OWeakObject * >(new Translator(context)); - } catch (std::bad_alloc &) { - throw css::uno::RuntimeException( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("std::bad_alloc")), 0); - } -} - -rtl::OUString getImplementationName() { - return rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.uri.ExternalUriReferenceTranslator")); -} - -css::uno::Sequence< rtl::OUString > getSupportedServiceNames() { - css::uno::Sequence< rtl::OUString > s(1); - s[0] = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uri.ExternalUriReferenceTranslator")); - return s; -} - -} } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/ExternalUriReferenceTranslator.hxx b/stoc/source/uriproc/ExternalUriReferenceTranslator.hxx deleted file mode 100644 index d4e1dd8bd..000000000 --- a/stoc/source/uriproc/ExternalUriReferenceTranslator.hxx +++ /dev/null @@ -1,62 +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 INCLUDED_stoc_source_uriproc_ExternalUriReferenceTranslator_hxx -#define INCLUDED_stoc_source_uriproc_ExternalUriReferenceTranslator_hxx - -#include "com/sun/star/uno/Exception.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/Sequence.hxx" -#include "sal/types.h" - -namespace com { namespace sun { namespace star { namespace uno { - class XComponentContext; - class XInterface; -} } } } -namespace rtl { class OUString; } - -namespace stoc { namespace uriproc { - -namespace ExternalUriReferenceTranslator { - com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL - create( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context) - SAL_THROW((com::sun::star::uno::Exception)); - - rtl::OUString SAL_CALL getImplementationName(); - - com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL - getSupportedServiceNames(); -} - -} } - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/UriReference.cxx b/stoc/source/uriproc/UriReference.cxx deleted file mode 100644 index 58737352d..000000000 --- a/stoc/source/uriproc/UriReference.cxx +++ /dev/null @@ -1,209 +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_stoc.hxx" - -#include "UriReference.hxx" - -#include "osl/diagnose.h" -#include "osl/mutex.hxx" -#include "rtl/string.h" -#include "rtl/ustrbuf.hxx" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -namespace css = com::sun::star; -using stoc::uriproc::UriReference; - -UriReference::UriReference( - rtl::OUString const & scheme, bool bIsHierarchical, bool bHasAuthority, - rtl::OUString const & authority, rtl::OUString const & path, - bool bHasQuery, rtl::OUString const & query): - m_scheme(scheme), - m_authority(authority), - m_path(path), - m_query(query), - m_isHierarchical(bIsHierarchical), - m_hasAuthority(bHasAuthority), - m_hasQuery(bHasQuery), - m_hasFragment(false) -{ - OSL_ASSERT(scheme.getLength() != 0 || bIsHierarchical); - OSL_ASSERT(!bHasAuthority || bIsHierarchical); - OSL_ASSERT(authority.getLength() == 0 || bHasAuthority); - OSL_ASSERT(!bHasQuery || bIsHierarchical); - OSL_ASSERT(query.getLength() == 0 || bHasQuery); -} - -UriReference::~UriReference() {} - -rtl::OUString UriReference::getUriReference() throw (css::uno::RuntimeException) -{ - osl::MutexGuard g(m_mutex); - rtl::OUStringBuffer buf; - if (m_scheme.getLength() != 0) { - buf.append(m_scheme); - buf.append(static_cast< sal_Unicode >(':')); - } - appendSchemeSpecificPart(buf); - if (m_hasFragment) { - buf.append(static_cast< sal_Unicode >('#')); - buf.append(m_fragment); - } - return buf.makeStringAndClear(); -} - -sal_Bool UriReference::isAbsolute() throw (css::uno::RuntimeException) { - return m_scheme.getLength() != 0; -} - -rtl::OUString UriReference::getScheme() throw (css::uno::RuntimeException) { - return m_scheme; -} - -rtl::OUString UriReference::getSchemeSpecificPart() - throw (css::uno::RuntimeException) -{ - osl::MutexGuard g(m_mutex); - rtl::OUStringBuffer buf; - appendSchemeSpecificPart(buf); - return buf.makeStringAndClear(); -} - -sal_Bool UriReference::isHierarchical() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_mutex); - return m_isHierarchical; -} - -sal_Bool UriReference::hasAuthority() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_mutex); - return m_hasAuthority; -} - -rtl::OUString UriReference::getAuthority() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_mutex); - return m_authority; -} - -rtl::OUString UriReference::getPath() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_mutex); - return m_path; -} - -sal_Bool UriReference::hasRelativePath() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_mutex); - return m_isHierarchical && !m_hasAuthority - && (m_path.getLength() == 0 || m_path[0] != '/'); -} - -sal_Int32 UriReference::getPathSegmentCount() throw (css::uno::RuntimeException) -{ - osl::MutexGuard g(m_mutex); - if (!m_isHierarchical || m_path.getLength() == 0) { - return 0; - } else { - sal_Int32 n = m_path[0] == '/' ? 0 : 1; - for (sal_Int32 i = 0;; ++i) { - i = m_path.indexOf('/', i); - if (i < 0) { - break; - } - ++n; - } - return n; - } -} - -rtl::OUString UriReference::getPathSegment(sal_Int32 index) - throw (css::uno::RuntimeException) -{ - osl::MutexGuard g(m_mutex); - if (m_isHierarchical && m_path.getLength() != 0 && index >= 0) { - for (sal_Int32 i = m_path[0] == '/' ? 1 : 0;; ++i) { - if (index-- == 0) { - sal_Int32 j = m_path.indexOf('/', i); - return j < 0 ? m_path.copy(i) : m_path.copy(i, j - i); - } - i = m_path.indexOf('/', i); - if (i < 0) { - break; - } - } - } - return rtl::OUString(); -} - -sal_Bool UriReference::hasQuery() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_mutex); - return m_hasQuery; -} - -rtl::OUString UriReference::getQuery() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_mutex); - return m_query; -} - -sal_Bool UriReference::hasFragment() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_mutex); - return m_hasFragment; -} - -rtl::OUString UriReference::getFragment() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_mutex); - return m_fragment; -} - -void UriReference::setFragment(rtl::OUString const & fragment) - throw (css::uno::RuntimeException) -{ - osl::MutexGuard g(m_mutex); - m_hasFragment = true; - m_fragment = fragment; -} - -void UriReference::clearFragment() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_mutex); - m_hasFragment = false; - m_fragment = rtl::OUString(); -} - -void UriReference::appendSchemeSpecificPart(rtl::OUStringBuffer & buffer) const -{ - if (m_hasAuthority) { - buffer.appendAscii(RTL_CONSTASCII_STRINGPARAM("//")); - buffer.append(m_authority); - } - buffer.append(m_path); - if (m_hasQuery) { - buffer.append(static_cast< sal_Unicode >('?')); - buffer.append(m_query); - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/UriReference.hxx b/stoc/source/uriproc/UriReference.hxx deleted file mode 100644 index 520c1763a..000000000 --- a/stoc/source/uriproc/UriReference.hxx +++ /dev/null @@ -1,111 +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 INCLUDED_stoc_source_uriproc_UriReference_hxx -#define INCLUDED_stoc_source_uriproc_UriReference_hxx - -#include "com/sun/star/uno/RuntimeException.hpp" -#include "osl/mutex.hxx" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -namespace rtl { class OUStringBuffer; } - -namespace stoc { namespace uriproc { - -class UriReference { -public: - UriReference( - rtl::OUString const & scheme, bool isHierarchical, bool hasAuthority, - rtl::OUString const & authority, rtl::OUString const & path, - bool hasQuery, rtl::OUString const & query); - - ~UriReference(); - - rtl::OUString getUriReference() - throw (com::sun::star::uno::RuntimeException); - - sal_Bool isAbsolute() throw (com::sun::star::uno::RuntimeException); - - rtl::OUString getScheme() throw (com::sun::star::uno::RuntimeException); - - rtl::OUString getSchemeSpecificPart() - throw (com::sun::star::uno::RuntimeException); - - sal_Bool isHierarchical() throw (com::sun::star::uno::RuntimeException); - - sal_Bool hasAuthority() throw (com::sun::star::uno::RuntimeException); - - rtl::OUString getAuthority() throw (com::sun::star::uno::RuntimeException); - - rtl::OUString getPath() throw (com::sun::star::uno::RuntimeException); - - sal_Bool hasRelativePath() throw (com::sun::star::uno::RuntimeException); - - sal_Int32 getPathSegmentCount() - throw (com::sun::star::uno::RuntimeException); - - rtl::OUString getPathSegment(sal_Int32 index) - throw (com::sun::star::uno::RuntimeException); - - sal_Bool hasQuery() throw (com::sun::star::uno::RuntimeException); - - rtl::OUString getQuery() throw (com::sun::star::uno::RuntimeException); - - sal_Bool hasFragment() throw (com::sun::star::uno::RuntimeException); - - rtl::OUString getFragment() throw (com::sun::star::uno::RuntimeException); - - void setFragment(rtl::OUString const & fragment) - throw (com::sun::star::uno::RuntimeException); - - void clearFragment() throw (com::sun::star::uno::RuntimeException); - - osl::Mutex m_mutex; - rtl::OUString m_scheme; - rtl::OUString m_authority; - rtl::OUString m_path; - rtl::OUString m_query; - rtl::OUString m_fragment; - bool m_isHierarchical; - bool m_hasAuthority; - bool m_hasQuery; - bool m_hasFragment; - -private: - UriReference(UriReference &); // not implemented - void operator =(UriReference); // not implemented - - void appendSchemeSpecificPart(rtl::OUStringBuffer & buffer) const; -}; - -} } - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/UriReferenceFactory.cxx b/stoc/source/uriproc/UriReferenceFactory.cxx deleted file mode 100644 index bbcfa1757..000000000 --- a/stoc/source/uriproc/UriReferenceFactory.cxx +++ /dev/null @@ -1,727 +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_stoc.hxx" - -#include "stocservices.hxx" - -#include "UriReference.hxx" -#include "supportsService.hxx" - -#include "com/sun/star/lang/WrappedTargetRuntimeException.hpp" -#include "com/sun/star/lang/XMultiComponentFactory.hpp" -#include "com/sun/star/lang/XServiceInfo.hpp" -#include "com/sun/star/uno/Any.hxx" -#include "com/sun/star/uno/Exception.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/RuntimeException.hpp" -#include "com/sun/star/uno/Sequence.hxx" -#include "com/sun/star/uno/XComponentContext.hpp" -#include "com/sun/star/uno/XInterface.hpp" -#include "com/sun/star/uri/RelativeUriExcessParentSegments.hpp" -#include "com/sun/star/uri/XUriReference.hpp" -#include "com/sun/star/uri/XUriReferenceFactory.hpp" -#include "com/sun/star/uri/XUriSchemeParser.hpp" -#include "cppuhelper/implbase1.hxx" -#include "cppuhelper/implbase2.hxx" -#include "cppuhelper/weak.hxx" -#include "osl/diagnose.h" -#include "rtl/string.h" -#include "rtl/ustrbuf.hxx" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -#include <algorithm> -#include /*MSVC trouble: <cstdlib>*/ <stdlib.h> -#include <new> -#include <vector> - -namespace css = com::sun::star; - -namespace { - -bool isDigit(sal_Unicode c) { //TODO: generally available? - return c >= '0' && c <= '9'; -} - -bool isUpperCase(sal_Unicode c) { //TODO: generally available? - return c >= 'A' && c <= 'Z'; -} - -bool isLowerCase(sal_Unicode c) { //TODO: generally available? - return c >= 'a' && c <= 'z'; -} - -bool isAlpha(sal_Unicode c) { //TODO: generally available? - return isUpperCase(c) || isLowerCase(c); -} - -bool isHexDigit(sal_Unicode c) { //TODO: generally available? - return isDigit(c) || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f'); -} - -sal_Unicode toLowerCase(sal_Unicode c) { //TODO: generally available? - return isUpperCase(c) ? c + ('a' - 'A') : c; -} - -bool equalIgnoreCase(sal_Unicode c1, sal_Unicode c2) { - //TODO: generally available? - return toLowerCase(c1) == toLowerCase(c2); -} - -bool equalIgnoreEscapeCase(rtl::OUString const & s1, rtl::OUString const & s2) { - if (s1.getLength() == s2.getLength()) { - for (sal_Int32 i = 0; i < s1.getLength();) { - if (s1[i] == '%' && s2[i] == '%' && s1.getLength() - i > 2 - && isHexDigit(s1[i + 1]) && isHexDigit(s1[i + 2]) - && isHexDigit(s2[i + 1]) && isHexDigit(s2[i + 2]) - && equalIgnoreCase(s1[i + 1], s2[i + 1]) - && equalIgnoreCase(s1[i + 2], s2[i + 2])) - { - i += 3; - } else if (s1[i] != s2[i]) { - return false; - } else { - ++i; - } - } - return true; - } else { - return false; - } -} - -sal_Int32 parseScheme(rtl::OUString const & uriReference) { - if (uriReference.getLength() >= 2 && isAlpha(uriReference[0])) { - for (sal_Int32 i = 0; i < uriReference.getLength(); ++i) { - sal_Unicode c = uriReference[i]; - if (c == ':') { - return i; - } else if (!isAlpha(c) && !isDigit(c) && c != '+' && c != '-' - && c != '.') - { - break; - } - } - } - return -1; -} - -class UriReference: public cppu::WeakImplHelper1< css::uri::XUriReference > { -public: - UriReference( - rtl::OUString const & scheme, bool bIsHierarchical, bool bHasAuthority, - rtl::OUString const & authority, rtl::OUString const & path, - bool bHasQuery, rtl::OUString const & query): - m_base( - scheme, bIsHierarchical, bHasAuthority, authority, path, bHasQuery, - query) - {} - - virtual rtl::OUString SAL_CALL getUriReference() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getUriReference(); } - - virtual sal_Bool SAL_CALL isAbsolute() - throw (com::sun::star::uno::RuntimeException) - { return m_base.isAbsolute(); } - - virtual rtl::OUString SAL_CALL getScheme() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getScheme(); } - - virtual rtl::OUString SAL_CALL getSchemeSpecificPart() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getSchemeSpecificPart(); } - - virtual sal_Bool SAL_CALL isHierarchical() - throw (com::sun::star::uno::RuntimeException) - { return m_base.isHierarchical(); } - - virtual sal_Bool SAL_CALL hasAuthority() - throw (com::sun::star::uno::RuntimeException) - { return m_base.hasAuthority(); } - - virtual rtl::OUString SAL_CALL getAuthority() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getAuthority(); } - - virtual rtl::OUString SAL_CALL getPath() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getPath(); } - - virtual sal_Bool SAL_CALL hasRelativePath() - throw (com::sun::star::uno::RuntimeException) - { return m_base.hasRelativePath(); } - - virtual sal_Int32 SAL_CALL getPathSegmentCount() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getPathSegmentCount(); } - - virtual rtl::OUString SAL_CALL getPathSegment(sal_Int32 index) - throw (com::sun::star::uno::RuntimeException) - { return m_base.getPathSegment(index); } - - virtual sal_Bool SAL_CALL hasQuery() - throw (com::sun::star::uno::RuntimeException) - { return m_base.hasQuery(); } - - virtual rtl::OUString SAL_CALL getQuery() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getQuery(); } - - virtual sal_Bool SAL_CALL hasFragment() - throw (com::sun::star::uno::RuntimeException) - { return m_base.hasFragment(); } - - virtual rtl::OUString SAL_CALL getFragment() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getFragment(); } - - virtual void SAL_CALL setFragment(rtl::OUString const & fragment) - throw (com::sun::star::uno::RuntimeException) - { m_base.setFragment(fragment); } - - virtual void SAL_CALL clearFragment() - throw (com::sun::star::uno::RuntimeException) - { m_base.clearFragment(); } - -private: - UriReference(UriReference &); // not implemented - void operator =(UriReference); // not implemented - - virtual ~UriReference() {} - - stoc::uriproc::UriReference m_base; -}; - -// throws std::bad_alloc -css::uno::Reference< css::uri::XUriReference > parseGeneric( - rtl::OUString const & scheme, rtl::OUString const & schemeSpecificPart) -{ - bool isAbsolute = scheme.getLength() != 0; - bool isHierarchical - = !isAbsolute - || (schemeSpecificPart.getLength() > 0 && schemeSpecificPart[0] == '/'); - bool hasAuthority = false; - rtl::OUString authority; - rtl::OUString path; - bool hasQuery = false; - rtl::OUString query; - if (isHierarchical) { - sal_Int32 len = schemeSpecificPart.getLength(); - sal_Int32 i = 0; - if (len - i >= 2 && schemeSpecificPart[i] == '/' - && schemeSpecificPart[i + 1] == '/') - { - i += 2; - sal_Int32 n = i; - while (i < len && schemeSpecificPart[i] != '/' - && schemeSpecificPart[i] != '?') { - ++i; - } - hasAuthority = true; - authority = schemeSpecificPart.copy(n, i - n); - } - sal_Int32 n = i; - i = schemeSpecificPart.indexOf('?', i); - if (i == -1) { - i = len; - } - path = schemeSpecificPart.copy(n, i - n); - if (i != len) { - hasQuery = true; - query = schemeSpecificPart.copy(i + 1); - } - } else { - if (schemeSpecificPart.getLength() == 0) { - // The scheme-specific part of an opaque URI must not be empty: - return 0; - } - path = schemeSpecificPart; - } - return new UriReference( - scheme, isHierarchical, hasAuthority, authority, path, hasQuery, query); -} - -typedef std::vector< sal_Int32 > Segments; - -void processSegments( - Segments & segments, - css::uno::Reference< css::uri::XUriReference > const & uriReference, - bool base, bool processSpecialSegments) -{ - sal_Int32 count = uriReference->getPathSegmentCount() - (base ? 1 : 0); - OSL_ASSERT(count <= SAL_MAX_INT32 - 1 && -count >= SAL_MIN_INT32 + 1); - for (sal_Int32 i = 0; i < count; ++i) { - if (processSpecialSegments) { - rtl::OUString segment(uriReference->getPathSegment(i)); - if (segment.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("."))) { - if (!base && i == count - 1) { - segments.push_back(0); - } - continue; - } else if (segment.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(".."))) { - if (segments.empty() - || /*MSVC trouble: std::*/abs(segments.back()) == 1) - { - segments.push_back(base ? -1 : 1); - } else { - segments.pop_back(); - } - continue; - } - } - segments.push_back(base ? -(i + 2) : i + 2); - } -} - -class Factory: public cppu::WeakImplHelper2< - css::lang::XServiceInfo, css::uri::XUriReferenceFactory > -{ -public: - explicit Factory( - css::uno::Reference< css::uno::XComponentContext > const & context): - m_context(context) {} - - virtual rtl::OUString SAL_CALL getImplementationName() - throw (css::uno::RuntimeException); - - virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & serviceName) - throw (css::uno::RuntimeException); - - virtual css::uno::Sequence< rtl::OUString > SAL_CALL - getSupportedServiceNames() throw (css::uno::RuntimeException); - - virtual css::uno::Reference< css::uri::XUriReference > SAL_CALL - parse(rtl::OUString const & uriReference) - throw (css::uno::RuntimeException); - - virtual css::uno::Reference< css::uri::XUriReference > SAL_CALL - makeAbsolute( - css::uno::Reference< css::uri::XUriReference > const & baseUriReference, - css::uno::Reference< css::uri::XUriReference > const & uriReference, - sal_Bool processSpecialBaseSegments, - css::uri::RelativeUriExcessParentSegments excessParentSegments) - throw (css::uno::RuntimeException); - - virtual css::uno::Reference< css::uri::XUriReference > SAL_CALL - makeRelative( - css::uno::Reference< css::uri::XUriReference > const & baseUriReference, - css::uno::Reference< css::uri::XUriReference > const & uriReference, - sal_Bool preferAuthorityOverRelativePath, - sal_Bool preferAbsoluteOverRelativePath, - sal_Bool encodeRetainedSpecialSegments) - throw (css::uno::RuntimeException); - -private: - Factory(Factory &); // not implemented - void operator =(Factory); // not implemented - - virtual ~Factory() {} - - css::uno::Reference< css::uri::XUriReference > clone( - css::uno::Reference< css::uri::XUriReference > const & uriReference) - { return parse(uriReference->getUriReference()); } - - css::uno::Reference< css::uno::XComponentContext > m_context; -}; - -rtl::OUString Factory::getImplementationName() - throw (css::uno::RuntimeException) -{ - return stoc_services::UriReferenceFactory::getImplementationName(); -} - -sal_Bool Factory::supportsService(rtl::OUString const & serviceName) - throw (css::uno::RuntimeException) -{ - return stoc::uriproc::supportsService( - getSupportedServiceNames(), serviceName); -} - -css::uno::Sequence< rtl::OUString > Factory::getSupportedServiceNames() - throw (css::uno::RuntimeException) -{ - return stoc_services::UriReferenceFactory::getSupportedServiceNames(); -} - -css::uno::Reference< css::uri::XUriReference > Factory::parse( - rtl::OUString const & uriReference) throw (css::uno::RuntimeException) -{ - sal_Int32 fragment = uriReference.indexOf('#'); - if (fragment == -1) { - fragment = uriReference.getLength(); - } - rtl::OUString scheme; - rtl::OUString schemeSpecificPart; - rtl::OUString serviceName; - sal_Int32 n = parseScheme(uriReference); - OSL_ASSERT(n < fragment); - if (n >= 0) { - scheme = uriReference.copy(0, n); - schemeSpecificPart = uriReference.copy(n + 1, fragment - (n + 1)); - rtl::OUStringBuffer buf; - buf.appendAscii( - RTL_CONSTASCII_STRINGPARAM("com.sun.star.uri.UriSchemeParser_")); - for (sal_Int32 i = 0; i < scheme.getLength(); ++i) { - sal_Unicode c = scheme[i]; - if (isUpperCase(c)) { - buf.append(toLowerCase(c)); - } else if (c == '+') { - buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("PLUS")); - } else if (c == '-') { - buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("HYPHEN")); - } else if (c == '.') { - buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("DOT")); - } else { - OSL_ASSERT(isLowerCase(c) || isDigit(c)); - buf.append(c); - } - } - serviceName = buf.makeStringAndClear(); - } else { - schemeSpecificPart = uriReference.copy(0, fragment); - } - css::uno::Reference< css::uri::XUriSchemeParser > parser; - if (serviceName.getLength() != 0) { - css::uno::Reference< css::lang::XMultiComponentFactory > factory( - m_context->getServiceManager()); - if (factory.is()) { - css::uno::Reference< css::uno::XInterface > service; - try { - service = factory->createInstanceWithContext( - serviceName, m_context); - } catch (css::uno::RuntimeException &) { - throw; - } catch (css::uno::Exception & e) { - throw css::lang::WrappedTargetRuntimeException( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("creating service ")) - + serviceName, - static_cast< cppu::OWeakObject * >(this), - css::uno::makeAny(e)); //TODO: preserve type of e - } - if (service.is()) { - parser = css::uno::Reference< css::uri::XUriSchemeParser >( - service, css::uno::UNO_QUERY_THROW); - } - } - } - css::uno::Reference< css::uri::XUriReference > uriRef; - if (parser.is()) { - uriRef = parser->parse(scheme, schemeSpecificPart); - } else { - try { - uriRef = parseGeneric(scheme, schemeSpecificPart); - } catch (std::bad_alloc &) { - throw css::uno::RuntimeException( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("std::bad_alloc")), - static_cast< cppu::OWeakObject * >(this)); - } - } - if (uriRef.is() && fragment != uriReference.getLength()) { - uriRef->setFragment(uriReference.copy(fragment + 1)); - } - return uriRef; -} - -css::uno::Reference< css::uri::XUriReference > Factory::makeAbsolute( - css::uno::Reference< css::uri::XUriReference > const & baseUriReference, - css::uno::Reference< css::uri::XUriReference > const & uriReference, - sal_Bool processSpecialBaseSegments, - css::uri::RelativeUriExcessParentSegments excessParentSegments) - throw (css::uno::RuntimeException) -{ - if (!baseUriReference.is() || !baseUriReference->isAbsolute() - || !baseUriReference->isHierarchical() || !uriReference.is()) { - return 0; - } else if (uriReference->isAbsolute()) { - return clone(uriReference); - } else if (!uriReference->hasAuthority() - && uriReference->getPath().getLength() == 0 - && !uriReference->hasQuery()) { - css::uno::Reference< css::uri::XUriReference > abs( - clone(baseUriReference)); - if (uriReference->hasFragment()) { - abs->setFragment(uriReference->getFragment()); - } else { - abs->clearFragment(); - } - return abs; - } else { - rtl::OUStringBuffer abs(baseUriReference->getScheme()); - abs.append(static_cast< sal_Unicode >(':')); - if (uriReference->hasAuthority()) { - abs.appendAscii(RTL_CONSTASCII_STRINGPARAM("//")); - abs.append(uriReference->getAuthority()); - } else if (baseUriReference->hasAuthority()) { - abs.appendAscii(RTL_CONSTASCII_STRINGPARAM("//")); - abs.append(baseUriReference->getAuthority()); - } - if (uriReference->hasRelativePath()) { - Segments segments; - processSegments( - segments, baseUriReference, true, processSpecialBaseSegments); - processSegments(segments, uriReference, false, true); - // If the path component of the base URI reference is empty (which - // implies that the base URI reference denotes a "root entity"), and - // the resulting URI reference denotes the same root entity, make - // sure the path component of the resulting URI reference is also - // empty (and not "/"). RFC 2396 is unclear about this, and I chose - // these rules for consistent results. - bool slash = baseUriReference->getPath().getLength() != 0; - if (slash) { - abs.append(static_cast< sal_Unicode >('/')); - } - for (Segments::iterator i(segments.begin()); i != segments.end(); - ++i) - { - if (*i < -1) { - rtl::OUString segment( - baseUriReference->getPathSegment(-(*i + 2))); - if (segment.getLength() != 0 || segments.size() > 1) { - if (!slash) { - abs.append(static_cast< sal_Unicode >('/')); - } - abs.append(segment); - slash = true; - abs.append(static_cast< sal_Unicode >('/')); - } - } else if (*i > 1) { - rtl::OUString segment(uriReference->getPathSegment(*i - 2)); - if (segment.getLength() != 0 || segments.size() > 1) { - if (!slash) { - abs.append(static_cast< sal_Unicode >('/')); - } - abs.append(segment); - slash = false; - } - } else if (*i == 0) { - if (segments.size() > 1 && !slash) { - abs.append(static_cast< sal_Unicode >('/')); - } - } else { - switch (excessParentSegments) { - case css::uri::RelativeUriExcessParentSegments_ERROR: - return 0; - - case css::uri::RelativeUriExcessParentSegments_RETAIN: - if (!slash) { - abs.append(static_cast< sal_Unicode >('/')); - } - abs.appendAscii(RTL_CONSTASCII_STRINGPARAM("..")); - slash = *i < 0; - if (slash) { - abs.append(static_cast< sal_Unicode >('/')); - } - break; - - case css::uri::RelativeUriExcessParentSegments_REMOVE: - break; - - default: - OSL_ASSERT(false); - break; - } - } - } - } else { - abs.append(uriReference->getPath()); - } - if (uriReference->hasQuery()) { - abs.append(static_cast< sal_Unicode >('?')); - abs.append(uriReference->getQuery()); - } - if (uriReference->hasFragment()) { - abs.append(static_cast< sal_Unicode >('#')); - abs.append(uriReference->getFragment()); - } - return parse(abs.makeStringAndClear()); - } -} - -css::uno::Reference< css::uri::XUriReference > Factory::makeRelative( - css::uno::Reference< css::uri::XUriReference > const & baseUriReference, - css::uno::Reference< css::uri::XUriReference > const & uriReference, - sal_Bool preferAuthorityOverRelativePath, - sal_Bool preferAbsoluteOverRelativePath, - sal_Bool encodeRetainedSpecialSegments) - throw (css::uno::RuntimeException) -{ - if (!baseUriReference.is() || !baseUriReference->isAbsolute() - || !baseUriReference->isHierarchical() || !uriReference.is()) { - return 0; - } else if (!uriReference->isAbsolute() || !uriReference->isHierarchical() - || !baseUriReference->getScheme().equalsIgnoreAsciiCase( - uriReference->getScheme())) { - return clone(uriReference); - } else { - rtl::OUStringBuffer rel; - bool omitQuery = false; - if ((baseUriReference->hasAuthority() != uriReference->hasAuthority()) - || !equalIgnoreEscapeCase( - baseUriReference->getAuthority(), - uriReference->getAuthority())) - { - if (uriReference->hasAuthority()) { - rel.appendAscii(RTL_CONSTASCII_STRINGPARAM("//")); - rel.append(uriReference->getAuthority()); - } - rel.append(uriReference->getPath()); - } else if ((equalIgnoreEscapeCase( - baseUriReference->getPath(), uriReference->getPath()) - || (baseUriReference->getPath().getLength() <= 1 - && uriReference->getPath().getLength() <= 1)) - && baseUriReference->hasQuery() == uriReference->hasQuery() - && equalIgnoreEscapeCase( - baseUriReference->getQuery(), uriReference->getQuery())) - { - omitQuery = true; - } else { - sal_Int32 count1 = std::max< sal_Int32 >( - baseUriReference->getPathSegmentCount(), 1); - sal_Int32 count2 = std::max< sal_Int32 >( - uriReference->getPathSegmentCount(), 1); - sal_Int32 i = 0; - for (; i < std::min(count1, count2) - 1; ++i) { - if (!equalIgnoreEscapeCase( - baseUriReference->getPathSegment(i), - uriReference->getPathSegment(i))) - { - break; - } - } - if (i == 0 && preferAbsoluteOverRelativePath - && (preferAuthorityOverRelativePath - || !uriReference->getPath().matchAsciiL( - RTL_CONSTASCII_STRINGPARAM("//")))) - { - if (baseUriReference->getPath().getLength() > 1 - || uriReference->getPath().getLength() > 1) - { - if (uriReference->getPath().getLength() == 0) { - rel.append(static_cast< sal_Unicode >('/')); - } else { - OSL_ASSERT(uriReference->getPath()[0] == '/'); - if (uriReference->getPath().matchAsciiL( - RTL_CONSTASCII_STRINGPARAM("//"))) { - OSL_ASSERT(uriReference->hasAuthority()); - rel.appendAscii(RTL_CONSTASCII_STRINGPARAM("//")); - rel.append(uriReference->getAuthority()); - } - rel.append(uriReference->getPath()); - } - } - } else { - bool segments = false; - for (sal_Int32 j = i; j < count1 - 1; ++j) { - if (segments) { - rel.append(static_cast< sal_Unicode >('/')); - } - rel.appendAscii(RTL_CONSTASCII_STRINGPARAM("..")); - segments = true; - } - if (i < count2 - 1 - || (uriReference->getPathSegment(count2 - 1).getLength() - != 0)) - { - if (!segments - && (uriReference->getPathSegment(i).getLength() == 0 - || (parseScheme(uriReference->getPathSegment(i)) - >= 0))) - { - rel.append(static_cast< sal_Unicode >('.')); - segments = true; - } - for (; i < count2; ++i) { - if (segments) { - rel.append(static_cast< sal_Unicode >('/')); - } - rtl::OUString s(uriReference->getPathSegment(i)); - if (encodeRetainedSpecialSegments - && s.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("."))) - { - rel.appendAscii(RTL_CONSTASCII_STRINGPARAM("%2E")); - } else if (encodeRetainedSpecialSegments - && s.equalsAsciiL( - RTL_CONSTASCII_STRINGPARAM(".."))) - { - rel.appendAscii( - RTL_CONSTASCII_STRINGPARAM("%2E%2E")); - } else { - rel.append(s); - } - segments = true; - } - } - } - } - if (!omitQuery && uriReference->hasQuery()) { - rel.append(static_cast< sal_Unicode >('?')); - rel.append(uriReference->getQuery()); - } - if (uriReference->hasFragment()) { - rel.append(static_cast< sal_Unicode >('#')); - rel.append(uriReference->getFragment()); - } - return parse(rel.makeStringAndClear()); - } -} - -} - -namespace stoc_services { namespace UriReferenceFactory { - -css::uno::Reference< css::uno::XInterface > create( - css::uno::Reference< css::uno::XComponentContext > const & context) - SAL_THROW((css::uno::Exception)) -{ - try { - return static_cast< cppu::OWeakObject * >(new Factory(context)); - } catch (std::bad_alloc &) { - throw css::uno::RuntimeException( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("std::bad_alloc")), 0); - } -} - -rtl::OUString getImplementationName() { - return rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.uri.UriReferenceFactory")); -} - -css::uno::Sequence< rtl::OUString > getSupportedServiceNames() { - css::uno::Sequence< rtl::OUString > s(1); - s[0] = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uri.UriReferenceFactory")); - return s; -} - -} } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/UriReferenceFactory.hxx b/stoc/source/uriproc/UriReferenceFactory.hxx deleted file mode 100644 index 38278b6bf..000000000 --- a/stoc/source/uriproc/UriReferenceFactory.hxx +++ /dev/null @@ -1,62 +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 INCLUDED_stoc_source_uriproc_UriReferenceFactory_hxx -#define INCLUDED_stoc_source_uriproc_UriReferenceFactory_hxx - -#include "com/sun/star/uno/Exception.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/Sequence.hxx" -#include "sal/types.h" - -namespace com { namespace sun { namespace star { namespace uno { - class XComponentContext; - class XInterface; -} } } } -namespace rtl { class OUString; } - -namespace stoc { namespace uriproc { - -namespace UriReferenceFactory { - com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL - create( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context) - SAL_THROW((com::sun::star::uno::Exception)); - - rtl::OUString SAL_CALL getImplementationName(); - - com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL - getSupportedServiceNames(); -} - -} } - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTexpand.cxx b/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTexpand.cxx deleted file mode 100644 index 18a576012..000000000 --- a/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTexpand.cxx +++ /dev/null @@ -1,271 +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_stoc.hxx" - -#include "sal/config.h" - -#include "stocservices.hxx" - -#include <new> - -#include "com/sun/star/lang/IllegalArgumentException.hpp" -#include "com/sun/star/lang/XServiceInfo.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/RuntimeException.hpp" -#include "com/sun/star/uno/Sequence.hxx" -#include "com/sun/star/uno/XInterface.hpp" -#include "com/sun/star/uri/XUriReference.hpp" -#include "com/sun/star/uri/XUriSchemeParser.hpp" -#include "com/sun/star/uri/XVndSunStarExpandUrlReference.hpp" -#include "com/sun/star/util/XMacroExpander.hpp" -#include "cppuhelper/implbase1.hxx" -#include "cppuhelper/implbase2.hxx" -#include "cppuhelper/weak.hxx" -#include "rtl/textenc.h" -#include "rtl/uri.h" -#include "rtl/uri.hxx" -#include "rtl/ustring.h" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -#include "UriReference.hxx" -#include "supportsService.hxx" - -namespace { - -namespace css = ::com::sun::star; - -bool parseSchemeSpecificPart(::rtl::OUString const & part) { - // Liberally accepts both an empty opaque_part and an opaque_part that - // starts with a non-escaped "/": - return part.getLength() == 0 - || ((::rtl::Uri::decode( - part, ::rtl_UriDecodeStrict, RTL_TEXTENCODING_UTF8). - getLength()) - != 0); -} - -class UrlReference: - public ::cppu::WeakImplHelper1< css::uri::XVndSunStarExpandUrlReference > -{ -public: - UrlReference(::rtl::OUString const & scheme, ::rtl::OUString const & path): - base_( - scheme, false, false, ::rtl::OUString(), path, false, - ::rtl::OUString()) - {} - - virtual ::rtl::OUString SAL_CALL getUriReference() - throw (css::uno::RuntimeException) - { return base_.getUriReference(); } - - virtual ::sal_Bool SAL_CALL isAbsolute() throw (css::uno::RuntimeException) - { return base_.isAbsolute(); } - - virtual ::rtl::OUString SAL_CALL getScheme() - throw (css::uno::RuntimeException) - { return base_.getScheme(); } - - virtual ::rtl::OUString SAL_CALL getSchemeSpecificPart() - throw (css::uno::RuntimeException) - { return base_.getSchemeSpecificPart(); } - - virtual ::sal_Bool SAL_CALL isHierarchical() - throw (css::uno::RuntimeException) - { return base_.isHierarchical(); } - - virtual ::sal_Bool SAL_CALL hasAuthority() - throw (css::uno::RuntimeException) - { return base_.hasAuthority(); } - - virtual ::rtl::OUString SAL_CALL getAuthority() - throw (css::uno::RuntimeException) - { return base_.getAuthority(); } - - virtual ::rtl::OUString SAL_CALL getPath() - throw (css::uno::RuntimeException) - { return base_.getPath(); } - - virtual ::sal_Bool SAL_CALL hasRelativePath() - throw (css::uno::RuntimeException) - { return base_.hasRelativePath(); } - - virtual ::sal_Int32 SAL_CALL getPathSegmentCount() - throw (css::uno::RuntimeException) - { return base_.getPathSegmentCount(); } - - virtual ::rtl::OUString SAL_CALL getPathSegment(sal_Int32 index) - throw (css::uno::RuntimeException) - { return base_.getPathSegment(index); } - - virtual ::sal_Bool SAL_CALL hasQuery() throw (css::uno::RuntimeException) - { return base_.hasQuery(); } - - virtual ::rtl::OUString SAL_CALL getQuery() - throw (css::uno::RuntimeException) - { return base_.getQuery(); } - - virtual ::sal_Bool SAL_CALL hasFragment() throw (css::uno::RuntimeException) - { return base_.hasFragment(); } - - virtual ::rtl::OUString SAL_CALL getFragment() - throw (css::uno::RuntimeException) - { return base_.getFragment(); } - - virtual void SAL_CALL setFragment(::rtl::OUString const & fragment) - throw (css::uno::RuntimeException) - { base_.setFragment(fragment); } - - virtual void SAL_CALL clearFragment() throw (css::uno::RuntimeException) - { base_.clearFragment(); } - - virtual ::rtl::OUString SAL_CALL expand( - css::uno::Reference< css::util::XMacroExpander > const & expander) - throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); - -private: - UrlReference(UrlReference &); // not defined - void operator =(UrlReference); // not defined - - virtual ~UrlReference() {} - - stoc::uriproc::UriReference base_; -}; - -::rtl::OUString UrlReference::expand( - css::uno::Reference< css::util::XMacroExpander > const & expander) - throw (css::lang::IllegalArgumentException, css::uno::RuntimeException) -{ - OSL_ASSERT(expander.is()); - return expander->expandMacros( - ::rtl::Uri::decode( - getPath(), ::rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8)); -} - -class Parser: public ::cppu::WeakImplHelper2< - css::lang::XServiceInfo, css::uri::XUriSchemeParser > -{ -public: - Parser() {} - - virtual ::rtl::OUString SAL_CALL getImplementationName() - throw (css::uno::RuntimeException); - - virtual ::sal_Bool SAL_CALL supportsService( - ::rtl::OUString const & serviceName) - throw (css::uno::RuntimeException); - - virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL - getSupportedServiceNames() throw (css::uno::RuntimeException); - - virtual css::uno::Reference< css::uri::XUriReference > SAL_CALL - parse( - ::rtl::OUString const & scheme, - ::rtl::OUString const & schemeSpecificPart) - throw (css::uno::RuntimeException); - -private: - Parser(Parser &); // not defined - void operator =(Parser); // not defined - - virtual ~Parser() {} -}; - -::rtl::OUString Parser::getImplementationName() - throw (css::uno::RuntimeException) -{ - return ::stoc_services::UriSchemeParser_vndDOTsunDOTstarDOTexpand:: - getImplementationName(); -} - -::sal_Bool Parser::supportsService(::rtl::OUString const & serviceName) - throw (css::uno::RuntimeException) -{ - return ::stoc::uriproc::supportsService( - getSupportedServiceNames(), serviceName); -} - -css::uno::Sequence< ::rtl::OUString > Parser::getSupportedServiceNames() - throw (css::uno::RuntimeException) -{ - return ::stoc_services::UriSchemeParser_vndDOTsunDOTstarDOTexpand:: - getSupportedServiceNames(); -} - -css::uno::Reference< css::uri::XUriReference > Parser::parse( - ::rtl::OUString const & scheme, ::rtl::OUString const & schemeSpecificPart) - throw (css::uno::RuntimeException) -{ - if (!parseSchemeSpecificPart(schemeSpecificPart)) { - return css::uno::Reference< css::uri::XUriReference >(); - } - try { - return new UrlReference(scheme, schemeSpecificPart); - } catch (::std::bad_alloc &) { - throw css::uno::RuntimeException( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("std::bad_alloc")), - css::uno::Reference< css::uno::XInterface >()); - } -} - -} - -namespace stoc_services { namespace UriSchemeParser_vndDOTsunDOTstarDOTexpand { - -css::uno::Reference< css::uno::XInterface > create( - css::uno::Reference< css::uno::XComponentContext > const &) - SAL_THROW((css::uno::Exception)) -{ - //TODO: single instance - try { - return static_cast< ::cppu::OWeakObject * >(new Parser); - } catch (::std::bad_alloc &) { - throw css::uno::RuntimeException( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("std::bad_alloc")), - css::uno::Reference< css::uno::XInterface >()); - } -} - -::rtl::OUString getImplementationName() { - return ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.comp.uri.UriSchemeParser_vndDOTsunDOTstarDOTexpand")); -} - -css::uno::Sequence< ::rtl::OUString > getSupportedServiceNames() { - css::uno::Sequence< ::rtl::OUString > s(1); - s[0] = ::rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.uri.UriSchemeParser_vndDOTsunDOTstarDOTexpand")); - return s; -} - -} } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTexpand.hxx b/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTexpand.hxx deleted file mode 100644 index b531c81a3..000000000 --- a/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTexpand.hxx +++ /dev/null @@ -1,65 +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 \ - INCLUDED_STOC_SOURCE_URIPROC_URISCHEMEPARSER_VNDDOTSUNDOTSTARDOTEXPAND_HXX -#define \ - INCLUDED_STOC_SOURCE_URIPROC_URISCHEMEPARSER_VNDDOTSUNDOTSTARDOTEXPAND_HXX - -#include "sal/config.h" -#include "com/sun/star/uno/Exception.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/Sequence.hxx" -#include "sal/types.h" - -namespace com { namespace sun { namespace star { namespace uno { - class XComponentContext; - class XInterface; -} } } } -namespace rtl { class OUString; } - -namespace stoc { namespace uriproc { - -namespace UriSchemeParser_vndDOTsunDOTstarDOTexpand { - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > - SAL_CALL create( - ::com::sun::star::uno::Reference< - ::com::sun::star::uno::XComponentContext > const &) - SAL_THROW((::com::sun::star::uno::Exception)); - - ::rtl::OUString SAL_CALL getImplementationName(); - - ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL - getSupportedServiceNames(); -} - -} } - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTscript.cxx b/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTscript.cxx deleted file mode 100644 index 581358b5b..000000000 --- a/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTscript.cxx +++ /dev/null @@ -1,488 +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_stoc.hxx" - -#include "stocservices.hxx" - -#include "UriReference.hxx" -#include "supportsService.hxx" - -#include "com/sun/star/lang/IllegalArgumentException.hpp" -#include "com/sun/star/lang/XServiceInfo.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/RuntimeException.hpp" -#include "com/sun/star/uno/Sequence.hxx" -#include "com/sun/star/uno/XInterface.hpp" -#include "com/sun/star/uri/XUriReference.hpp" -#include "com/sun/star/uri/XUriSchemeParser.hpp" -#include "com/sun/star/uri/XVndSunStarScriptUrlReference.hpp" -#include "cppuhelper/implbase1.hxx" -#include "cppuhelper/implbase2.hxx" -#include "cppuhelper/weak.hxx" -#include "osl/mutex.hxx" -#include "rtl/uri.hxx" -#include "rtl/ustrbuf.hxx" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -#include <new> - -namespace css = com::sun::star; - -namespace { - -int getHexWeight(sal_Unicode c) { - return c >= '0' && c <= '9' ? static_cast< int >(c - '0') - : c >= 'A' && c <= 'F' ? static_cast< int >(c - 'A' + 10) - : c >= 'a' && c <= 'f' ? static_cast< int >(c - 'a' + 10) - : -1; -} - -int parseEscaped(rtl::OUString const & part, sal_Int32 * index) { - if (part.getLength() - *index < 3 || part[*index] != '%') { - return -1; - } - int n1 = getHexWeight(part[*index + 1]); - int n2 = getHexWeight(part[*index + 2]); - if (n1 < 0 || n2 < 0) { - return -1; - } - *index += 3; - return (n1 << 4) | n2; -} - -rtl::OUString parsePart( - rtl::OUString const & part, bool namePart, sal_Int32 * index) -{ - rtl::OUStringBuffer buf; - while (*index < part.getLength()) { - sal_Unicode c = part[*index]; - if (namePart ? c == '?' : c == '&' || c == '=') { - break; - } else if (c == '%') { - sal_Int32 i = *index; - int n = parseEscaped(part, &i); - if (n >= 0 && n <= 0x7F) { - buf.append(static_cast< sal_Unicode >(n)); - } else if (n >= 0xC0 && n <= 0xFC) { - sal_Int32 encoded; - int shift; - sal_Int32 min; - if (n <= 0xDF) { - encoded = (n & 0x1F) << 6; - shift = 0; - min = 0x80; - } else if (n <= 0xEF) { - encoded = (n & 0x0F) << 12; - shift = 6; - min = 0x800; - } else if (n <= 0xF7) { - encoded = (n & 0x07) << 18; - shift = 12; - min = 0x10000; - } else if (n <= 0xFB) { - encoded = (n & 0x03) << 24; - shift = 18; - min = 0x200000; - } else { - encoded = 0; - shift = 24; - min = 0x4000000; - } - bool utf8 = true; - for (; shift >= 0; shift -= 6) { - n = parseEscaped(part, &i); - if (n < 0x80 || n > 0xBF) { - utf8 = false; - break; - } - encoded |= (n & 0x3F) << shift; - } - if (!utf8 || encoded < min - || (encoded >= 0xD800 && encoded <= 0xDFFF) - || encoded > 0x10FFFF) - { - break; - } - if (encoded <= 0xFFFF) { - buf.append(static_cast< sal_Unicode >(encoded)); - } else { - buf.append(static_cast< sal_Unicode >( - (encoded >> 10) | 0xD800)); - buf.append(static_cast< sal_Unicode >( - (encoded & 0x3FF) | 0xDC00)); - } - } else { - break; - } - *index = i; - } else { - buf.append(c); - ++*index; - } - } - return buf.makeStringAndClear(); -} - -namespace -{ - static rtl::OUString encodeNameOrParamFragment( rtl::OUString const & fragment ) - { - static sal_Bool const aCharClass[] = - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* NameOrParamFragment */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, /* !"#$%&'()*+,-./*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, /*0123456789:;<=>?*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*@ABCDEFGHIJKLMNO*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, /*PQRSTUVWXYZ[\]^_*/ - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*`abcdefghijklmno*/ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0 /*pqrstuvwxyz{|}~ */ - }; - - return rtl::Uri::encode( - fragment, - aCharClass, - rtl_UriEncodeIgnoreEscapes, - RTL_TEXTENCODING_UTF8 - ); - } -} - -bool parseSchemeSpecificPart(rtl::OUString const & part) { - sal_Int32 len = part.getLength(); - sal_Int32 i = 0; - if (parsePart(part, true, &i).getLength() == 0 || part[0] == '/') { - return false; - } - if (i == len) { - return true; - } - for (;;) { - ++i; // skip '?' or '&' - if (parsePart(part, false, &i).getLength() == 0 || i == len - || part[i] != '=') - { - return false; - } - ++i; - parsePart(part, false, &i); - if (i == len) { - return true; - } - if (part[i] != '&') { - return false; - } - } -} - -class UrlReference: - public cppu::WeakImplHelper1< css::uri::XVndSunStarScriptUrlReference > -{ -public: - UrlReference(rtl::OUString const & scheme, rtl::OUString const & path): - m_base( - scheme, false, false, rtl::OUString(), path, false, rtl::OUString()) - {} - - virtual rtl::OUString SAL_CALL getUriReference() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getUriReference(); } - - virtual sal_Bool SAL_CALL isAbsolute() - throw (com::sun::star::uno::RuntimeException) - { return m_base.isAbsolute(); } - - virtual rtl::OUString SAL_CALL getScheme() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getScheme(); } - - virtual rtl::OUString SAL_CALL getSchemeSpecificPart() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getSchemeSpecificPart(); } - - virtual sal_Bool SAL_CALL isHierarchical() - throw (com::sun::star::uno::RuntimeException) - { return m_base.isHierarchical(); } - - virtual sal_Bool SAL_CALL hasAuthority() - throw (com::sun::star::uno::RuntimeException) - { return m_base.hasAuthority(); } - - virtual rtl::OUString SAL_CALL getAuthority() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getAuthority(); } - - virtual rtl::OUString SAL_CALL getPath() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getPath(); } - - virtual sal_Bool SAL_CALL hasRelativePath() - throw (com::sun::star::uno::RuntimeException) - { return m_base.hasRelativePath(); } - - virtual sal_Int32 SAL_CALL getPathSegmentCount() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getPathSegmentCount(); } - - virtual rtl::OUString SAL_CALL getPathSegment(sal_Int32 index) - throw (com::sun::star::uno::RuntimeException) - { return m_base.getPathSegment(index); } - - virtual sal_Bool SAL_CALL hasQuery() - throw (com::sun::star::uno::RuntimeException) - { return m_base.hasQuery(); } - - virtual rtl::OUString SAL_CALL getQuery() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getQuery(); } - - virtual sal_Bool SAL_CALL hasFragment() - throw (com::sun::star::uno::RuntimeException) - { return m_base.hasFragment(); } - - virtual rtl::OUString SAL_CALL getFragment() - throw (com::sun::star::uno::RuntimeException) - { return m_base.getFragment(); } - - virtual void SAL_CALL setFragment(rtl::OUString const & fragment) - throw (com::sun::star::uno::RuntimeException) - { m_base.setFragment(fragment); } - - virtual void SAL_CALL clearFragment() - throw (com::sun::star::uno::RuntimeException) - { m_base.clearFragment(); } - - virtual rtl::OUString SAL_CALL getName() throw (css::uno::RuntimeException); - - virtual void SAL_CALL setName(rtl::OUString const & name) - throw (css::uno::RuntimeException, css::lang::IllegalArgumentException); - - virtual sal_Bool SAL_CALL hasParameter(rtl::OUString const & key) - throw (css::uno::RuntimeException); - - virtual rtl::OUString SAL_CALL getParameter(rtl::OUString const & key) - throw (css::uno::RuntimeException); - - virtual void SAL_CALL setParameter(rtl::OUString const & key, rtl::OUString const & value) - throw (css::uno::RuntimeException, css::lang::IllegalArgumentException); - -private: - UrlReference(UrlReference &); // not implemented - void operator =(UrlReference); // not implemented - - virtual ~UrlReference() {} - - sal_Int32 findParameter(rtl::OUString const & key); - - stoc::uriproc::UriReference m_base; -}; - -rtl::OUString UrlReference::getName() throw (css::uno::RuntimeException) { - osl::MutexGuard g(m_base.m_mutex); - sal_Int32 i = 0; - return parsePart(m_base.m_path, true, &i); -} - -void SAL_CALL UrlReference::setName(rtl::OUString const & name) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException) -{ - if (name.getLength() == 0) - throw css::lang::IllegalArgumentException( - ::rtl::OUString(), *this, 1); - - osl::MutexGuard g(m_base.m_mutex); - sal_Int32 i = 0; - parsePart(m_base.m_path, true, &i); - - rtl::OUStringBuffer newPath; - newPath.append(encodeNameOrParamFragment(name)); - newPath.append(m_base.m_path.copy(i)); - m_base.m_path = newPath.makeStringAndClear(); -} - -sal_Bool UrlReference::hasParameter(rtl::OUString const & key) - throw (css::uno::RuntimeException) -{ - osl::MutexGuard g(m_base.m_mutex); - return findParameter(key) >= 0; -} - -rtl::OUString UrlReference::getParameter(rtl::OUString const & key) - throw (css::uno::RuntimeException) -{ - osl::MutexGuard g(m_base.m_mutex); - sal_Int32 i = findParameter(key); - return i >= 0 ? parsePart(m_base.m_path, false, &i) : rtl::OUString(); -} - -void UrlReference::setParameter(rtl::OUString const & key, rtl::OUString const & value) - throw (css::uno::RuntimeException, css::lang::IllegalArgumentException) -{ - if (key.getLength() == 0) - throw css::lang::IllegalArgumentException( - ::rtl::OUString(), *this, 1); - - osl::MutexGuard g(m_base.m_mutex); - sal_Int32 i = findParameter(key); - bool bExistent = ( i>=0 ); - if (!bExistent) { - i = m_base.m_path.getLength(); - } - - rtl::OUStringBuffer newPath; - newPath.append(m_base.m_path.copy(0, i)); - if (!bExistent) { - newPath.append(sal_Unicode(m_base.m_path.indexOf('?') < 0 ? '?' : '&')); - newPath.append(encodeNameOrParamFragment(key)); - newPath.append(sal_Unicode('=')); - } - newPath.append(encodeNameOrParamFragment(value)); - if (bExistent) { - /*oldValue = */ - parsePart(m_base.m_path, false, &i); // skip key - newPath.append(m_base.m_path.copy(i)); - } - - m_base.m_path = newPath.makeStringAndClear(); -} - -sal_Int32 UrlReference::findParameter(rtl::OUString const & key) { - sal_Int32 i = 0; - parsePart(m_base.m_path, true, &i); // skip name - for (;;) { - if (i == m_base.m_path.getLength()) { - return -1; - } - ++i; // skip '?' or '&' - rtl::OUString k = parsePart(m_base.m_path, false, &i); - ++i; // skip '=' - if (k == key) { - return i; - } - parsePart(m_base.m_path, false, &i); // skip value - } -} - -class Parser: public cppu::WeakImplHelper2< - css::lang::XServiceInfo, css::uri::XUriSchemeParser > -{ -public: - Parser() {} - - virtual rtl::OUString SAL_CALL getImplementationName() - throw (css::uno::RuntimeException); - - virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & serviceName) - throw (css::uno::RuntimeException); - - virtual css::uno::Sequence< rtl::OUString > SAL_CALL - getSupportedServiceNames() throw (css::uno::RuntimeException); - - virtual css::uno::Reference< css::uri::XUriReference > SAL_CALL - parse( - rtl::OUString const & scheme, rtl::OUString const & schemeSpecificPart) - throw (css::uno::RuntimeException); - -private: - Parser(Parser &); // not implemented - void operator =(Parser); // not implemented - - virtual ~Parser() {} -}; - -rtl::OUString Parser::getImplementationName() - throw (css::uno::RuntimeException) -{ - return stoc_services::UriSchemeParser_vndDOTsunDOTstarDOTscript:: - getImplementationName(); -} - -sal_Bool Parser::supportsService(rtl::OUString const & serviceName) - throw (css::uno::RuntimeException) -{ - return stoc::uriproc::supportsService( - getSupportedServiceNames(), serviceName); -} - -css::uno::Sequence< rtl::OUString > Parser::getSupportedServiceNames() - throw (css::uno::RuntimeException) -{ - return stoc_services::UriSchemeParser_vndDOTsunDOTstarDOTscript:: - getSupportedServiceNames(); -} - -css::uno::Reference< css::uri::XUriReference > -Parser::parse( - rtl::OUString const & scheme, rtl::OUString const & schemeSpecificPart) - throw (css::uno::RuntimeException) -{ - if (!parseSchemeSpecificPart(schemeSpecificPart)) { - return 0; - } - try { - return new UrlReference(scheme, schemeSpecificPart); - } catch (std::bad_alloc &) { - throw css::uno::RuntimeException( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("std::bad_alloc")), 0); - } -} - -} - -namespace stoc_services { -namespace UriSchemeParser_vndDOTsunDOTstarDOTscript { - -css::uno::Reference< css::uno::XInterface > create( - css::uno::Reference< css::uno::XComponentContext > const &) - SAL_THROW((css::uno::Exception)) -{ - //TODO: single instance - try { - return static_cast< cppu::OWeakObject * >(new Parser); - } catch (std::bad_alloc &) { - throw css::uno::RuntimeException( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("std::bad_alloc")), 0); - } -} - -rtl::OUString getImplementationName() { - return rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.uri.UriSchemeParser_vndDOTsunDOTstarDOTscript")); -} - -css::uno::Sequence< rtl::OUString > getSupportedServiceNames() { - css::uno::Sequence< rtl::OUString > s(1); - s[0] = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uri.UriSchemeParser_vndDOTsunDOTstarDOTscript")); - return s; -} - -} } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTscript.hxx b/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTscript.hxx deleted file mode 100644 index f2abe47a7..000000000 --- a/stoc/source/uriproc/UriSchemeParser_vndDOTsunDOTstarDOTscript.hxx +++ /dev/null @@ -1,64 +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 \ - INCLUDED_stoc_source_uriproc_UriSchemeParser_vndDOTsunDOTstarDOTscript_hxx -#define \ - INCLUDED_stoc_source_uriproc_UriSchemeParser_vndDOTsunDOTstarDOTscript_hxx - -#include "com/sun/star/uno/Exception.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/Sequence.hxx" -#include "sal/types.h" - -namespace com { namespace sun { namespace star { namespace uno { - class XComponentContext; - class XInterface; -} } } } -namespace rtl { class OUString; } - -namespace stoc { namespace uriproc { - -namespace UriSchemeParser_vndDOTsunDOTstarDOTscript { - com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL - create( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const &) - SAL_THROW((com::sun::star::uno::Exception)); - - rtl::OUString SAL_CALL getImplementationName(); - - com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL - getSupportedServiceNames(); -} - -} } - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/VndSunStarPkgUrlReferenceFactory.cxx b/stoc/source/uriproc/VndSunStarPkgUrlReferenceFactory.cxx deleted file mode 100644 index f117b5b00..000000000 --- a/stoc/source/uriproc/VndSunStarPkgUrlReferenceFactory.cxx +++ /dev/null @@ -1,170 +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_stoc.hxx" - -#include "stocservices.hxx" - -#include "supportsService.hxx" - -#include "com/sun/star/lang/XServiceInfo.hpp" -#include "com/sun/star/uno/Exception.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/RuntimeException.hpp" -#include "com/sun/star/uno/Sequence.hxx" -#include "com/sun/star/uno/XComponentContext.hpp" -#include "com/sun/star/uno/XInterface.hpp" -#include "com/sun/star/uri/UriReferenceFactory.hpp" -#include "com/sun/star/uri/XUriReference.hpp" -#include "com/sun/star/uri/XUriReferenceFactory.hpp" -#include "com/sun/star/uri/XVndSunStarPkgUrlReferenceFactory.hpp" -#include "cppuhelper/implbase2.hxx" -#include "cppuhelper/weak.hxx" -#include "rtl/string.h" -#include "rtl/textenc.h" -#include "rtl/uri.h" -#include "rtl/uri.hxx" -#include "rtl/ustrbuf.hxx" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -#include <new> - -namespace css = com::sun::star; - -namespace { - -class Factory: public cppu::WeakImplHelper2< - css::lang::XServiceInfo, css::uri::XVndSunStarPkgUrlReferenceFactory > -{ -public: - explicit Factory( - css::uno::Reference< css::uno::XComponentContext > const & context): - m_context(context) {} - - virtual rtl::OUString SAL_CALL getImplementationName() - throw (css::uno::RuntimeException); - - virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & serviceName) - throw (css::uno::RuntimeException); - - virtual css::uno::Sequence< rtl::OUString > SAL_CALL - getSupportedServiceNames() throw (css::uno::RuntimeException); - - virtual css::uno::Reference< css::uri::XUriReference > SAL_CALL - createVndSunStarPkgUrlReference( - css::uno::Reference< css::uri::XUriReference > const & authority) - throw (css::uno::RuntimeException); - -private: - Factory(Factory &); // not implemented - void operator =(Factory); // not implemented - - virtual ~Factory() {} - - css::uno::Reference< css::uno::XComponentContext > m_context; -}; - -rtl::OUString Factory::getImplementationName() - throw (css::uno::RuntimeException) -{ - return - stoc_services::VndSunStarPkgUrlReferenceFactory:: - getImplementationName(); -} - -sal_Bool Factory::supportsService(rtl::OUString const & serviceName) - throw (css::uno::RuntimeException) -{ - return stoc::uriproc::supportsService( - getSupportedServiceNames(), serviceName); -} - -css::uno::Sequence< rtl::OUString > Factory::getSupportedServiceNames() - throw (css::uno::RuntimeException) -{ - return stoc_services::VndSunStarPkgUrlReferenceFactory:: - getSupportedServiceNames(); -} - -css::uno::Reference< css::uri::XUriReference > -Factory::createVndSunStarPkgUrlReference( - css::uno::Reference< css::uri::XUriReference > const & authority) - throw (css::uno::RuntimeException) -{ - OSL_ASSERT(authority.is()); - if (authority->isAbsolute() && !authority->hasFragment()) { - rtl::OUStringBuffer buf; - buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.pkg://")); - buf.append( - rtl::Uri::encode( - authority->getUriReference(), rtl_UriCharClassRegName, - rtl_UriEncodeIgnoreEscapes, RTL_TEXTENCODING_UTF8)); - css::uno::Reference< css::uri::XUriReference > uriRef( - css::uri::UriReferenceFactory::create(m_context)->parse( - buf.makeStringAndClear())); - OSL_ASSERT(uriRef.is()); - return uriRef; - } else { - return css::uno::Reference< css::uri::XUriReference >(); - } -} - -} - -namespace stoc_services { namespace VndSunStarPkgUrlReferenceFactory -{ - -css::uno::Reference< css::uno::XInterface > create( - css::uno::Reference< css::uno::XComponentContext > const & context) - SAL_THROW((css::uno::Exception)) -{ - try { - return static_cast< cppu::OWeakObject * >(new Factory(context)); - } catch (std::bad_alloc &) { - throw css::uno::RuntimeException( - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("std::bad_alloc")), 0); - } -} - -rtl::OUString getImplementationName() { - return rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.uri.VndSunStarPkgUrlReferenceFactory")); -} - -css::uno::Sequence< rtl::OUString > getSupportedServiceNames() { - css::uno::Sequence< rtl::OUString > s(1); - s[0] = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uri.VndSunStarPkgUrlReferenceFactory")); - return s; -} - -} } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/VndSunStarPkgUrlReferenceFactory.hxx b/stoc/source/uriproc/VndSunStarPkgUrlReferenceFactory.hxx deleted file mode 100644 index 48f2c63d5..000000000 --- a/stoc/source/uriproc/VndSunStarPkgUrlReferenceFactory.hxx +++ /dev/null @@ -1,62 +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 INCLUDED_stoc_source_uriproc_VndSunStarPkgUrlReferenceFactory_hxx -#define INCLUDED_stoc_source_uriproc_VndSunStarPkgUrlReferenceFactory_hxx - -#include "com/sun/star/uno/Exception.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/Sequence.hxx" -#include "sal/types.h" - -namespace com { namespace sun { namespace star { namespace uno { - class XComponentContext; - class XInterface; -} } } } -namespace rtl { class OUString; } - -namespace stoc { namespace uriproc { - -namespace VndSunStarPkgUrlReferenceFactory { - com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL - create( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context) - SAL_THROW((com::sun::star::uno::Exception)); - - rtl::OUString SAL_CALL getImplementationName(); - - com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL - getSupportedServiceNames(); -} - -} } - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/makefile.mk b/stoc/source/uriproc/makefile.mk deleted file mode 100644 index 194da2219..000000000 --- a/stoc/source/uriproc/makefile.mk +++ /dev/null @@ -1,53 +0,0 @@ -#************************************************************************* -# -# 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. -# -#************************************************************************* - -PRJ=..$/.. -PRJNAME=stoc -TARGET=uriproc -ENABLE_EXCEPTIONS := TRUE - -# --- openoffice.org.orig/Settings ----------------------------------------------------- - -.INCLUDE: settings.mk -DLLPRE = - -# ------------------------------------------------------------------ - -.INCLUDE : ..$/cppumaker.mk - -SLOFILES = \ - $(SLO)$/ExternalUriReferenceTranslator.obj \ - $(SLO)$/UriReference.obj \ - $(SLO)$/UriReferenceFactory.obj \ - $(SLO)$/UriSchemeParser_vndDOTsunDOTstarDOTexpand.obj \ - $(SLO)$/UriSchemeParser_vndDOTsunDOTstarDOTscript.obj \ - $(SLO)$/VndSunStarPkgUrlReferenceFactory.obj \ - $(SLO)$/supportsService.obj - -# ------------------------------------------------------------------ - -.INCLUDE: target.mk diff --git a/stoc/source/uriproc/supportsService.cxx b/stoc/source/uriproc/supportsService.cxx deleted file mode 100644 index 1bf136ac8..000000000 --- a/stoc/source/uriproc/supportsService.cxx +++ /dev/null @@ -1,54 +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_stoc.hxx" - -#include "supportsService.hxx" - -#include "com/sun/star/uno/Sequence.hxx" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -namespace stoc { namespace uriproc { - -bool supportsService( - com::sun::star::uno::Sequence< rtl::OUString > const & serviceNames, - rtl::OUString const & serviceName) -{ - for (sal_Int32 i = 0; i < serviceNames.getLength(); ++i) { - if (serviceNames[i] == serviceName) { - return true; - } - } - return false; -} - -} } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/stoc/source/uriproc/supportsService.hxx b/stoc/source/uriproc/supportsService.hxx deleted file mode 100644 index 5103bec31..000000000 --- a/stoc/source/uriproc/supportsService.hxx +++ /dev/null @@ -1,46 +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 INCLUDED_stoc_source_uriproc_supportsService_hxx -#define INCLUDED_stoc_source_uriproc_supportsService_hxx - -#include "com/sun/star/uno/Sequence.hxx" - -namespace rtl { class OUString; } - -namespace stoc { namespace uriproc { - -bool supportsService( - com::sun::star::uno::Sequence< rtl::OUString > const & serviceNames, - rtl::OUString const & serviceName); - -} } - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |