/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #include "sal/config.h" #include "jvmaccess/classpath.hxx" #include #include #include "com/sun/star/lang/IllegalArgumentException.hpp" #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/RuntimeException.hpp" #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/XVndSunStarExpandUrlReference.hpp" #include "com/sun/star/util/theMacroExpander.hpp" #include "rtl/ustring.hxx" #include "sal/types.h" #include "jni.h" jobjectArray jvmaccess::ClassPath::translateToUrls( css::uno::Reference< css::uno::XComponentContext > const & context, JNIEnv * environment, OUString const & classPath) { assert(context.is()); assert(environment != nullptr); jclass classUrl(environment->FindClass("java/net/URL")); if (classUrl == nullptr) { return nullptr; } jmethodID ctorUrl( environment->GetMethodID(classUrl, "", "(Ljava/lang/String;)V")); if (ctorUrl == nullptr) { return nullptr; } ::std::vector< jobject > urls; for (::sal_Int32 i = 0; i != -1;) { OUString url(classPath.getToken(0, ' ', i)); if (!url.isEmpty()) { css::uno::Reference< css::uri::XVndSunStarExpandUrlReference > expUrl( css::uri::UriReferenceFactory::create(context)->parse(url), css::uno::UNO_QUERY); if (expUrl.is()) { css::uno::Reference< css::util::XMacroExpander > expander = css::util::theMacroExpander::get(context); try { url = expUrl->expand( expander ); } catch (const css::lang::IllegalArgumentException & e) { throw css::uno::RuntimeException( "com.sun.star.lang.IllegalArgumentException: " + e.Message); } } jvalue arg; arg.l = environment->NewString( reinterpret_cast< jchar const * >(url.getStr()), static_cast< jsize >(url.getLength())); if (arg.l == nullptr) { return nullptr; } jobject o(environment->NewObjectA(classUrl, ctorUrl, &arg)); if (o == nullptr) { return nullptr; } urls.push_back(o); } } jobjectArray result = environment->NewObjectArray( static_cast< jsize >(urls.size()), classUrl, nullptr); // static_cast is ok, as each element of urls occupied at least one // character of the OUString classPath if (result == nullptr) { return nullptr; } jsize idx = 0; for (std::vector< jobject >::iterator i(urls.begin()); i != urls.end(); ++i) { environment->SetObjectArrayElement(result, idx++, *i); } return result; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ stro/collabora/dcm-6.2'>distro/collabora/dcm-6.2 LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2013-02-22quiet external module build log unless failureNorbert Thiebaud
2013-02-19rename SYSTEM_LIBMSPUB to SYSTEM_MSPUB to remove specialcasingBjoern Michaelsen
2013-02-18Update the internal libmspub to 0.0.5Fridrich Štrba
2013-02-17Improve support for --with-system-boost --with-boost=... in external modulesStephan Bergmann
2013-01-28Silence some warningsFridrich Štrba
2013-01-28Use the BOOST_INCLUDE_DIR variable in Windows buildFridrich Štrba
2013-01-28add boost dependency and header-finding hackery to libmspubCaolán McNamara
2013-01-28Upload libmspub 0.0.4Fridrich Štrba
2012-12-03libmspub apparently needs boost headersLuboš Luňák
2012-10-15tweak some build.lsts for the group photo...Michael Stahl
2012-09-22fix delivery of headers in ExternalPackagesDavid Tardon
2012-09-22update ext. projects to use ExternalPackageDavid Tardon
2012-09-08libmspub: fix typo; it's add_patchesMatúš Kukan
2012-09-08libmspub: use set_warnings_not_errorsMatúš Kukan
2012-09-08rename: set_cxx_suffix -> set_generated_cxx_suffix; used for external libsMatúš Kukan
2012-09-08libwpd: convert to gbuildMatúš Kukan
2012-09-08libwpg: convert to gbuildMatúš Kukan
2012-09-08libmspub: convert to gbuildMatúš Kukan
2012-08-21Fix MSVC buildTor Lillqvist
2012-08-21Fixing error: \u0000 is not a valid universal characterFridrich Štrba
2012-08-21Uploading libmspub-0.0.3 release (support for MS Pub 97 and 98)Fridrich Štrba
2012-07-15Uploading libmspub-0.0.2 releaseFridrich Štrba
2012-07-12Fix a crash with iterator accessFridrich Štrba
2012-07-12Some more Windows fixes for libmspubFridrich Štrba
2012-07-12Trying to fix the windows build even moreFridrich Štrba
2012-07-12Misceallanous M_PI fixups to fix Win32 buildFridrich Štrba
2012-07-11Uploading libmspub 0.0.1 releaseFridrich Štrba
2012-06-05Adding Microsoft Publisher Import filterFridrich Štrba