summaryrefslogtreecommitdiff
path: root/stoc/source/javavm
diff options
context:
space:
mode:
Diffstat (limited to 'stoc/source/javavm')
-rw-r--r--stoc/source/javavm/interact.cxx128
-rw-r--r--stoc/source/javavm/interact.hxx78
-rw-r--r--stoc/source/javavm/javavm.component35
-rw-r--r--stoc/source/javavm/javavm.cxx1772
-rw-r--r--stoc/source/javavm/javavm.hxx175
-rw-r--r--stoc/source/javavm/jen.xml70
-rw-r--r--stoc/source/javavm/jvmargs.cxx68
-rw-r--r--stoc/source/javavm/jvmargs.hxx61
-rw-r--r--stoc/source/javavm/makefile.mk94
9 files changed, 0 insertions, 2481 deletions
diff --git a/stoc/source/javavm/interact.cxx b/stoc/source/javavm/interact.cxx
deleted file mode 100644
index b8992cd85..000000000
--- a/stoc/source/javavm/interact.cxx
+++ /dev/null
@@ -1,128 +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 "interact.hxx"
-
-#include "com/sun/star/java/JavaDisabledException.hpp"
-#include "com/sun/star/java/JavaVMCreationFailureException.hpp"
-#include "com/sun/star/task/XInteractionAbort.hpp"
-#include "com/sun/star/task/XInteractionRetry.hpp"
-#include "com/sun/star/task/XInteractionContinuation.hpp"
-#include "cppuhelper/implbase1.hxx"
-#include "osl/mutex.hxx"
-
-namespace css = com::sun::star;
-
-using stoc_javavm::InteractionRequest;
-
-namespace {
-
-class AbortContinuation:
- public cppu::WeakImplHelper1< css::task::XInteractionAbort >
-{
-public:
- inline AbortContinuation() {}
-
- virtual inline void SAL_CALL select() throw (css::uno::RuntimeException) {}
-
-private:
- AbortContinuation(AbortContinuation &); // not implemented
- void operator =(AbortContinuation); // not implemented
-
- virtual inline ~AbortContinuation() {}
-};
-
-}
-
-class InteractionRequest::RetryContinuation:
- public cppu::WeakImplHelper1< css::task::XInteractionRetry >
-{
-public:
- inline RetryContinuation(): m_bSelected(false) {}
-
- virtual void SAL_CALL select() throw (css::uno::RuntimeException);
-
- bool isSelected() const;
-
-private:
- RetryContinuation(RetryContinuation &); // not implemented
- void operator =(RetryContinuation); // not implemented
-
- virtual inline ~RetryContinuation() {}
-
- mutable osl::Mutex m_aMutex;
- bool m_bSelected;
-};
-
-void SAL_CALL InteractionRequest::RetryContinuation::select()
- throw (css::uno::RuntimeException)
-{
- osl::MutexGuard aGuard(m_aMutex);
- m_bSelected = true;
-}
-
-bool InteractionRequest::RetryContinuation::isSelected() const
-{
- osl::MutexGuard aGuard(m_aMutex);
- return m_bSelected;
-}
-
-InteractionRequest::InteractionRequest(css::uno::Any const & rRequest):
- m_aRequest(rRequest)
-{
- m_aContinuations.realloc(2);
- m_xRetryContinuation = new RetryContinuation;
- m_aContinuations[0] = new AbortContinuation;
- m_aContinuations[1] = m_xRetryContinuation.get();
-}
-
-css::uno::Any SAL_CALL InteractionRequest::getRequest()
- throw (css::uno::RuntimeException)
-{
- return m_aRequest;
-}
-
-css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > >
-SAL_CALL InteractionRequest::getContinuations()
- throw (css::uno::RuntimeException)
-{
- return m_aContinuations;
-}
-
-bool InteractionRequest::retry() const
-{
- return m_xRetryContinuation.is() && m_xRetryContinuation->isSelected();
-}
-
-InteractionRequest::~InteractionRequest()
-{}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/stoc/source/javavm/interact.hxx b/stoc/source/javavm/interact.hxx
deleted file mode 100644
index fe9f79672..000000000
--- a/stoc/source/javavm/interact.hxx
+++ /dev/null
@@ -1,78 +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.
- *
- ************************************************************************/
-
-#if !defined INCLUDED_STOC_JAVAVM_INTERACT_HXX
-#define INCLUDED_STOC_JAVAVM_INTERACT_HXX
-
-#include "com/sun/star/task/XInteractionRequest.hpp"
-#include "com/sun/star/uno/Any.hxx"
-#include "com/sun/star/uno/Reference.hxx"
-#include "com/sun/star/uno/Sequence.hxx"
-#include "cppuhelper/implbase1.hxx"
-#include "rtl/ref.hxx"
-
-namespace com { namespace sun { namespace star { namespace task {
- class XInteractionContinuation;
-} } } }
-
-namespace stoc_javavm {
-
-class InteractionRequest:
- public cppu::WeakImplHelper1< com::sun::star::task::XInteractionRequest >
-{
-public:
- explicit InteractionRequest(com::sun::star::uno::Any const & rRequest);
-
- virtual com::sun::star::uno::Any SAL_CALL getRequest()
- throw (com::sun::star::uno::RuntimeException);
-
- virtual com::sun::star::uno::Sequence< com::sun::star::uno::Reference<
- com::sun::star::task::XInteractionContinuation > > SAL_CALL
- getContinuations() throw (com::sun::star::uno::RuntimeException);
-
- bool retry() const;
-
-private:
- class RetryContinuation;
-
- InteractionRequest(InteractionRequest &); // not implemented
- void operator =(InteractionRequest); // not implemented
-
- virtual ~InteractionRequest();
-
- com::sun::star::uno::Any m_aRequest;
- com::sun::star::uno::Sequence< com::sun::star::uno::Reference<
- com::sun::star::task::XInteractionContinuation > > m_aContinuations;
- rtl::Reference< RetryContinuation > m_xRetryContinuation;
-};
-
-}
-
-#endif // INCLUDED_STOC_JAVAVM_INTERACT_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/stoc/source/javavm/javavm.component b/stoc/source/javavm/javavm.component
deleted file mode 100644
index f78d8af3a..000000000
--- a/stoc/source/javavm/javavm.component
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--**********************************************************************
-*
-* 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.
-*
-**********************************************************************-->
-
-<component loader="com.sun.star.loader.SharedLibrary"
- xmlns="http://openoffice.org/2010/uno-components">
- <implementation name="com.sun.star.comp.stoc.JavaVirtualMachine">
- <service name="com.sun.star.java.JavaVirtualMachine"/>
- <singleton name="com.sun.star.java.theJavaVirtualMachine"/>
- </implementation>
-</component>
diff --git a/stoc/source/javavm/javavm.cxx b/stoc/source/javavm/javavm.cxx
deleted file mode 100644
index 93c21e174..000000000
--- a/stoc/source/javavm/javavm.cxx
+++ /dev/null
@@ -1,1772 +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 "javavm.hxx"
-
-#include "interact.hxx"
-#include "jvmargs.hxx"
-
-#include "com/sun/star/beans/NamedValue.hpp"
-#include "com/sun/star/beans/PropertyState.hpp"
-#include "com/sun/star/beans/PropertyValue.hpp"
-#include "com/sun/star/container/XContainer.hpp"
-#include "com/sun/star/java/JavaNotFoundException.hpp"
-#include "com/sun/star/java/InvalidJavaSettingsException.hpp"
-#include "com/sun/star/java/RestartRequiredException.hpp"
-#include "com/sun/star/java/JavaDisabledException.hpp"
-#include "com/sun/star/java/JavaVMCreationFailureException.hpp"
-#include "com/sun/star/lang/DisposedException.hpp"
-#include "com/sun/star/lang/IllegalArgumentException.hpp"
-#include "com/sun/star/lang/XEventListener.hpp"
-#include "com/sun/star/lang/XMultiComponentFactory.hpp"
-#include "com/sun/star/lang/XSingleComponentFactory.hpp"
-#include "com/sun/star/lang/WrappedTargetRuntimeException.hpp"
-#include "com/sun/star/registry/XRegistryKey.hpp"
-#include "com/sun/star/registry/XSimpleRegistry.hpp"
-#include "com/sun/star/task/XInteractionHandler.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/XCurrentContext.hpp"
-#include "com/sun/star/uno/XInterface.hpp"
-#include "com/sun/star/util/XMacroExpander.hpp"
-#include "com/sun/star/container/XNameAccess.hpp"
-#include "cppuhelper/exc_hlp.hxx"
-#include "cppuhelper/factory.hxx"
-#include "cppuhelper/implbase1.hxx"
-#include "cppuhelper/implementationentry.hxx"
-#include "jvmaccess/classpath.hxx"
-#include "jvmaccess/unovirtualmachine.hxx"
-#include "jvmaccess/virtualmachine.hxx"
-#include "osl/file.hxx"
-#include "osl/thread.h"
-#include "rtl/bootstrap.hxx"
-#include "rtl/process.h"
-#include "rtl/string.h"
-#include "rtl/ustrbuf.hxx"
-#include "rtl/ustring.h"
-#include "rtl/ustring.hxx"
-#include "rtl/uri.hxx"
-#include "sal/types.h"
-#include "uno/current_context.hxx"
-#include "uno/environment.h"
-#include "uno/lbnames.h"
-#include "jvmfwk/framework.h"
-#include "jni.h"
-
-#include <stack>
-#include <string.h>
-#include <time.h>
-#include <memory>
-#include <vector>
-#include "boost/scoped_array.hpp"
-#define OUSTR(x) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( x ))
-
-// Properties of the javavm can be put
-// as a komma separated list in this
-// environment variable
-#define PROPERTIES_ENV "OO_JAVA_PROPERTIES"
-#ifdef UNIX
-#define INI_FILE "javarc"
-#ifdef MACOSX
-#define DEF_JAVALIB "JavaVM.framework"
-#else
-#define DEF_JAVALIB "libjvm.so"
-#endif
-#define TIMEZONE "MEZ"
-#else
-#define INI_FILE "java.ini"
-#define DEF_JAVALIB "jvm.dll"
-#define TIMEZONE "MET"
-#endif
-
-/* Within this implementation of the com.sun.star.java.JavaVirtualMachine
- * service and com.sun.star.java.theJavaVirtualMachine singleton, the method
- * com.sun.star.java.XJavaVM.getJavaVM relies on the following:
- * 1 The string "$URE_INTERNAL_JAVA_DIR/" is expanded via the
- * com.sun.star.util.theMacroExpander singleton into an internal (see the
- * com.sun.star.uri.ExternalUriReferenceTranslator service), hierarchical URI
- * reference relative to which the URE JAR files can be addressed.
- * 2 The string "$URE_INTERNAL_JAVA_CLASSPATH" is either not expandable via the
- * com.sun.star.util.theMacroExpander singleton
- * (com.sun.star.lang.IllegalArgumentException), or is expanded via the
- * com.sun.star.util.theMacroExpander singleton into a list of zero or more
- * internal (see the com.sun.star.uri.ExternalUriReferenceTranslator service)
- * URIs, where any space characters (U+0020) are ignored (and, in particular,
- * separate adjacent URIs).
- * If either of these requirements is not met, getJavaVM raises a
- * com.sun.star.uno.RuntimeException.
- */
-
-namespace css = com::sun::star;
-
-using stoc_javavm::JavaVirtualMachine;
-
-namespace {
-
-
-
-class NoJavaIniException: public css::uno::Exception
-{
-};
-
-class SingletonFactory:
- private cppu::WeakImplHelper1< css::lang::XEventListener >
-{
-public:
- static css::uno::Reference< css::uno::XInterface > getSingleton(
- css::uno::Reference< css::uno::XComponentContext > const & rContext);
-
-private:
- SingletonFactory(SingletonFactory &); // not implemented
- void operator =(SingletonFactory); // not implemented
-
- inline SingletonFactory() {}
-
- virtual inline ~SingletonFactory() {}
-
- virtual void SAL_CALL disposing(css::lang::EventObject const &)
- throw (css::uno::RuntimeException);
-
- static void dispose();
-
- // TODO ok to keep these static?
- static osl::Mutex m_aMutex;
- static css::uno::Reference< css::uno::XInterface > m_xSingleton;
- static bool m_bDisposed;
-};
-
-css::uno::Reference< css::uno::XInterface > SingletonFactory::getSingleton(
- css::uno::Reference< css::uno::XComponentContext > const & rContext)
-{
- css::uno::Reference< css::uno::XInterface > xSingleton;
- css::uno::Reference< css::lang::XComponent > xComponent;
- {
- osl::MutexGuard aGuard(m_aMutex);
- if (!m_xSingleton.is())
- {
- if (m_bDisposed)
- throw css::lang::DisposedException();
- xComponent = css::uno::Reference< css::lang::XComponent >(
- rContext, css::uno::UNO_QUERY_THROW);
- m_xSingleton = static_cast< cppu::OWeakObject * >(
- new JavaVirtualMachine(rContext));
- }
- xSingleton = m_xSingleton;
- }
- if (xComponent.is())
- try
- {
- xComponent->addEventListener(new SingletonFactory);
- }
- catch (...)
- {
- dispose();
- throw;
- }
- return xSingleton;
-}
-
-void SAL_CALL SingletonFactory::disposing(css::lang::EventObject const &)
- throw (css::uno::RuntimeException)
-{
- dispose();
-}
-
-void SingletonFactory::dispose()
-{
- css::uno::Reference< css::lang::XComponent > xComponent;
- {
- osl::MutexGuard aGuard(m_aMutex);
- xComponent = css::uno::Reference< css::lang::XComponent >(
- m_xSingleton, css::uno::UNO_QUERY);
- m_xSingleton.clear();
- m_bDisposed = true;
- }
- if (xComponent.is())
- xComponent->dispose();
-}
-
-osl::Mutex SingletonFactory::m_aMutex;
-css::uno::Reference< css::uno::XInterface > SingletonFactory::m_xSingleton;
-bool SingletonFactory::m_bDisposed = false;
-
-rtl::OUString serviceGetImplementationName()
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.comp.stoc.JavaVirtualMachine"));
-}
-
-css::uno::Sequence< rtl::OUString > serviceGetSupportedServiceNames()
-{
- rtl::OUString aServiceName(
- RTL_CONSTASCII_USTRINGPARAM("com.sun.star.java.JavaVirtualMachine"));
- return css::uno::Sequence< rtl::OUString >(&aServiceName, 1);
-}
-
-css::uno::Reference< css::uno::XInterface > SAL_CALL serviceCreateInstance(
- css::uno::Reference< css::uno::XComponentContext > const & rContext)
- SAL_THROW((css::uno::Exception))
-{
- // Only one single instance of this service is ever constructed, and is
- // available until the component context used to create this instance is
- // disposed. Afterwards, this function throws a DisposedException (as do
- // all relevant methods on the single service instance).
- return SingletonFactory::getSingleton(rContext);
-}
-
-cppu::ImplementationEntry const aServiceImplementation[]
- = { { serviceCreateInstance,
- serviceGetImplementationName,
- serviceGetSupportedServiceNames,
- cppu::createSingleComponentFactory,
- 0, 0 },
- { 0, 0, 0, 0, 0, 0 } };
-
-typedef std::stack< jvmaccess::VirtualMachine::AttachGuard * > GuardStack;
-
-extern "C" {
-
-static void destroyAttachGuards(void * pData)
-{
- GuardStack * pStack = static_cast< GuardStack * >(pData);
- if (pStack != 0)
- {
- while (!pStack->empty())
- {
- delete pStack->top();
- pStack->pop();
- }
- delete pStack;
- }
-}
-
-}
-
-bool askForRetry(css::uno::Any const & rException)
-{
- css::uno::Reference< css::uno::XCurrentContext > xContext(
- css::uno::getCurrentContext());
- if (xContext.is())
- {
- css::uno::Reference< css::task::XInteractionHandler > xHandler;
- xContext->getValueByName(rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "java-vm.interaction-handler")))
- >>= xHandler;
- if (xHandler.is())
- {
- rtl::Reference< stoc_javavm::InteractionRequest > xRequest(
- new stoc_javavm::InteractionRequest(rException));
- xHandler->handle(xRequest.get());
- return xRequest->retry();
- }
- }
- return false;
-}
-
-// Only gets the properties if the "Proxy Server" entry in the option dialog is
-// set to manual (i.e. not to none)
-void getINetPropsFromConfig(stoc_javavm::JVM * pjvm,
- const css::uno::Reference<css::lang::XMultiComponentFactory> & xSMgr,
- const css::uno::Reference<css::uno::XComponentContext> &xCtx ) throw (css::uno::Exception)
-{
- css::uno::Reference<css::uno::XInterface> xConfRegistry = xSMgr->createInstanceWithContext(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationRegistry")),
- xCtx );
- if(!xConfRegistry.is()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("javavm.cxx: couldn't get ConfigurationRegistry")), 0);
-
- css::uno::Reference<css::registry::XSimpleRegistry> xConfRegistry_simple(xConfRegistry, css::uno::UNO_QUERY);
- if(!xConfRegistry_simple.is()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("javavm.cxx: couldn't get ConfigurationRegistry")), 0);
-
- xConfRegistry_simple->open(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Inet")), sal_True, sal_False);
- css::uno::Reference<css::registry::XRegistryKey> xRegistryRootKey = xConfRegistry_simple->getRootKey();
-
-// if ooInetProxyType is not 0 then read the settings
- css::uno::Reference<css::registry::XRegistryKey> proxyEnable= xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetProxyType")));
- if( proxyEnable.is() && 0 != proxyEnable->getLongValue())
- {
- // read ftp proxy name
- css::uno::Reference<css::registry::XRegistryKey> ftpProxy_name = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetFTPProxyName")));
- if(ftpProxy_name.is() && ftpProxy_name->getStringValue().getLength()) {
- rtl::OUString ftpHost = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ftp.proxyHost="));
- ftpHost += ftpProxy_name->getStringValue();
-
- // read ftp proxy port
- css::uno::Reference<css::registry::XRegistryKey> ftpProxy_port = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetFTPProxyPort")));
- if(ftpProxy_port.is() && ftpProxy_port->getLongValue()) {
- rtl::OUString ftpPort = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ftp.proxyPort="));
- ftpPort += rtl::OUString::valueOf(ftpProxy_port->getLongValue());
-
- pjvm->pushProp(ftpHost);
- pjvm->pushProp(ftpPort);
- }
- }
-
- // read http proxy name
- css::uno::Reference<css::registry::XRegistryKey> httpProxy_name = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetHTTPProxyName")));
- if(httpProxy_name.is() && httpProxy_name->getStringValue().getLength()) {
- rtl::OUString httpHost = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("http.proxyHost="));
- httpHost += httpProxy_name->getStringValue();
-
- // read http proxy port
- css::uno::Reference<css::registry::XRegistryKey> httpProxy_port = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetHTTPProxyPort")));
- if(httpProxy_port.is() && httpProxy_port->getLongValue()) {
- rtl::OUString httpPort = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("http.proxyPort="));
- httpPort += rtl::OUString::valueOf(httpProxy_port->getLongValue());
-
- pjvm->pushProp(httpHost);
- pjvm->pushProp(httpPort);
- }
- }
-
- // read https proxy name
- css::uno::Reference<css::registry::XRegistryKey> httpsProxy_name = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetHTTPSProxyName")));
- if(httpsProxy_name.is() && httpsProxy_name->getStringValue().getLength()) {
- rtl::OUString httpsHost = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("https.proxyHost="));
- httpsHost += httpsProxy_name->getStringValue();
-
- // read https proxy port
- css::uno::Reference<css::registry::XRegistryKey> httpsProxy_port = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetHTTPSProxyPort")));
- if(httpsProxy_port.is() && httpsProxy_port->getLongValue()) {
- rtl::OUString httpsPort = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("https.proxyPort="));
- httpsPort += rtl::OUString::valueOf(httpsProxy_port->getLongValue());
-
- pjvm->pushProp(httpsHost);
- pjvm->pushProp(httpsPort);
- }
- }
-
- // read nonProxyHosts
- css::uno::Reference<css::registry::XRegistryKey> nonProxies_name = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetNoProxy")));
- if(nonProxies_name.is() && nonProxies_name->getStringValue().getLength()) {
- rtl::OUString httpNonProxyHosts = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("http.nonProxyHosts="));
- rtl::OUString ftpNonProxyHosts= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ftp.nonProxyHosts="));
- rtl::OUString value= nonProxies_name->getStringValue();
- // replace the separator ";" by "|"
- value= value.replace((sal_Unicode)';', (sal_Unicode)'|');
-
- httpNonProxyHosts += value;
- ftpNonProxyHosts += value;
-
- pjvm->pushProp(httpNonProxyHosts);
- pjvm->pushProp(ftpNonProxyHosts);
- }
-
- // read socks settings
-/* Reference<XRegistryKey> socksProxy_name = xRegistryRootKey->openKey(OUSTR("Settings/ooInetSOCKSProxyName"));
- if (socksProxy_name.is() && httpProxy_name->getStringValue().getLength()) {
- OUString socksHost = OUSTR("socksProxyHost=");
- socksHost += socksProxy_name->getStringValue();
-
- // read http proxy port
- Reference<XRegistryKey> socksProxy_port = xRegistryRootKey->openKey(OUSTR("Settings/ooInetSOCKSProxyPort"));
- if (socksProxy_port.is() && socksProxy_port->getLongValue()) {
- OUString socksPort = OUSTR("socksProxyPort=");
- socksPort += OUString::valueOf(socksProxy_port->getLongValue());
-
- pjvm->pushProp(socksHost);
- pjvm->pushProp(socksPort);
- }
- }
-*/ }
- xConfRegistry_simple->close();
-}
-
-void getDefaultLocaleFromConfig(
- stoc_javavm::JVM * pjvm,
- const css::uno::Reference<css::lang::XMultiComponentFactory> & xSMgr,
- const css::uno::Reference<css::uno::XComponentContext> &xCtx ) throw(css::uno::Exception)
-{
- css::uno::Reference<css::uno::XInterface> xConfRegistry =
- xSMgr->createInstanceWithContext(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.configuration.ConfigurationRegistry")), xCtx );
- if(!xConfRegistry.is())
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("javavm.cxx: couldn't get ConfigurationRegistry")), 0);
-
- css::uno::Reference<css::registry::XSimpleRegistry> xConfRegistry_simple(
- xConfRegistry, css::uno::UNO_QUERY);
- if(!xConfRegistry_simple.is())
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("javavm.cxx: couldn't get ConfigurationRegistry")), 0);
-
- xConfRegistry_simple->open(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup")), sal_True, sal_False);
- css::uno::Reference<css::registry::XRegistryKey> xRegistryRootKey = xConfRegistry_simple->getRootKey();
-
- // read locale
- css::uno::Reference<css::registry::XRegistryKey> locale = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("L10N/ooLocale")));
- if(locale.is() && locale->getStringValue().getLength()) {
- rtl::OUString language;
- rtl::OUString country;
-
- sal_Int32 index = locale->getStringValue().indexOf((sal_Unicode) '-');
-
- if(index >= 0) {
- language = locale->getStringValue().copy(0, index);
- country = locale->getStringValue().copy(index + 1);
-
- if(language.getLength()) {
- rtl::OUString prop(RTL_CONSTASCII_USTRINGPARAM("user.language="));
- prop += language;
-
- pjvm->pushProp(prop);
- }
-
- if(country.getLength()) {
- rtl::OUString prop(RTL_CONSTASCII_USTRINGPARAM("user.country="));
- prop += country;
-
- pjvm->pushProp(prop);
- }
- }
- }
-
- xConfRegistry_simple->close();
-}
-
-
-
-void getJavaPropsFromSafetySettings(
- stoc_javavm::JVM * pjvm,
- const css::uno::Reference<css::lang::XMultiComponentFactory> & xSMgr,
- const css::uno::Reference<css::uno::XComponentContext> &xCtx) throw(css::uno::Exception)
-{
- css::uno::Reference<css::uno::XInterface> xConfRegistry =
- xSMgr->createInstanceWithContext(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.configuration.ConfigurationRegistry")),
- xCtx);
- if(!xConfRegistry.is())
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("javavm.cxx: couldn't get ConfigurationRegistry")), 0);
-
- css::uno::Reference<css::registry::XSimpleRegistry> xConfRegistry_simple(
- xConfRegistry, css::uno::UNO_QUERY);
- if(!xConfRegistry_simple.is())
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("javavm.cxx: couldn't get ConfigurationRegistry")), 0);
-
- xConfRegistry_simple->open(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Java")),
- sal_True, sal_False);
- css::uno::Reference<css::registry::XRegistryKey> xRegistryRootKey =
- xConfRegistry_simple->getRootKey();
-
- if (xRegistryRootKey.is())
- {
- css::uno::Reference<css::registry::XRegistryKey> key_NetAccess= xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VirtualMachine/NetAccess")));
- if (key_NetAccess.is())
- {
- sal_Int32 val= key_NetAccess->getLongValue();
- rtl::OUString sVal;
- switch( val)
- {
- case 0: sVal= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("host"));
- break;
- case 1: sVal= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unrestricted"));
- break;
- case 3: sVal= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("none"));
- break;
- }
- rtl::OUString sProperty( RTL_CONSTASCII_USTRINGPARAM("appletviewer.security.mode="));
- sProperty= sProperty + sVal;
- pjvm->pushProp(sProperty);
- }
- css::uno::Reference<css::registry::XRegistryKey> key_CheckSecurity= xRegistryRootKey->openKey(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VirtualMachine/Security")));
- if( key_CheckSecurity.is())
- {
- sal_Bool val= (sal_Bool) key_CheckSecurity->getLongValue();
- rtl::OUString sProperty(RTL_CONSTASCII_USTRINGPARAM("stardiv.security.disableSecurity="));
- if( val)
- sProperty= sProperty + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("false"));
- else
- sProperty= sProperty + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("true"));
- pjvm->pushProp( sProperty);
- }
- }
- xConfRegistry_simple->close();
-}
-
-static void setTimeZone(stoc_javavm::JVM * pjvm) throw() {
- /* A Bug in the Java function
- ** struct Hjava_util_Properties * java_lang_System_initProperties(
- ** struct Hjava_lang_System *this,
- ** struct Hjava_util_Properties *props);
- ** This function doesn't detect MEZ, MET or "W. Europe Standard Time"
- */
- struct tm *tmData;
- time_t clock = time(NULL);
- tzset();
- tmData = localtime(&clock);
-#ifdef MACOSX
- char * p = tmData->tm_zone;
-#else
- char * p = tzname[0];
- (void)tmData;
-#endif
-
- if (!strcmp(TIMEZONE, p))
- pjvm->pushProp(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("user.timezone=ECT")));
-}
-
-void initVMConfiguration(
- stoc_javavm::JVM * pjvm,
- const css::uno::Reference<css::lang::XMultiComponentFactory> & xSMgr,
- const css::uno::Reference<css::uno::XComponentContext > &xCtx) throw(css::uno::Exception)
-{
- stoc_javavm::JVM jvm;
- try {
- getINetPropsFromConfig(&jvm, xSMgr, xCtx);
- }
- catch(css::uno::Exception & exception) {
-#if OSL_DEBUG_LEVEL > 1
- rtl::OString message = rtl::OUStringToOString(exception.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_TRACE("javavm.cxx: can not get INetProps cause of >%s<", message.getStr());
-#else
- (void) exception; // unused
-#endif
- }
-
- try {
- getDefaultLocaleFromConfig(&jvm, xSMgr,xCtx);
- }
- catch(css::uno::Exception & exception) {
-#if OSL_DEBUG_LEVEL > 1
- rtl::OString message = rtl::OUStringToOString(exception.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_TRACE("javavm.cxx: can not get locale cause of >%s<", message.getStr());
-#else
- (void) exception; // unused
-#endif
- }
-
- try
- {
- getJavaPropsFromSafetySettings(&jvm, xSMgr, xCtx);
- }
- catch(css::uno::Exception & exception) {
-#if OSL_DEBUG_LEVEL > 1
- rtl::OString message = rtl::OUStringToOString(exception.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_TRACE("javavm.cxx: couldn't get safety settings because of >%s<", message.getStr());
-#else
- (void) exception; // unused
-#endif
- }
-
- *pjvm= jvm;
- setTimeZone(pjvm);
-
-}
-
-class DetachCurrentThread {
-public:
- explicit DetachCurrentThread(JavaVM * jvm): m_jvm(jvm) {}
-
- ~DetachCurrentThread() {
- if (m_jvm->DetachCurrentThread() != 0) {
- OSL_ASSERT(false);
- }
- }
-
-private:
- DetachCurrentThread(DetachCurrentThread &); // not defined
- void operator =(DetachCurrentThread &); // not defined
-
- JavaVM * m_jvm;
-};
-
-}
-
-extern "C" SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(sal_Char const * pImplName,
- void * pServiceManager,
- void * pRegistryKey)
-{
- return cppu::component_getFactoryHelper(pImplName, pServiceManager,
- pRegistryKey,
- aServiceImplementation);
-}
-
-// There is no component_canUnload, as the library cannot be unloaded.
-
-JavaVirtualMachine::JavaVirtualMachine(
- css::uno::Reference< css::uno::XComponentContext > const & rContext):
- JavaVirtualMachine_Impl(*static_cast< osl::Mutex * >(this)),
- m_xContext(rContext),
- m_bDisposed(false),
- m_pJavaVm(0),
- m_bDontCreateJvm(false),
- m_aAttachGuards(destroyAttachGuards) // TODO check for validity
-{}
-
-void SAL_CALL
-JavaVirtualMachine::initialize(css::uno::Sequence< css::uno::Any > const &
- rArguments)
- throw (css::uno::Exception)
-{
- osl::MutexGuard aGuard(*this);
- if (m_bDisposed)
- throw css::lang::DisposedException(
- rtl::OUString(), static_cast< cppu::OWeakObject * >(this));
- if (m_xUnoVirtualMachine.is())
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "bad call to initialize")),
- static_cast< cppu::OWeakObject * >(this));
- css::beans::NamedValue val;
- if (rArguments.getLength() == 1 && (rArguments[0] >>= val)
- && val.Name.equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM( "UnoVirtualMachine")))
- {
- OSL_ENSURE(
- sizeof (sal_Int64) >= sizeof (jvmaccess::UnoVirtualMachine *),
- "Pointer cannot be represented as sal_Int64");
- sal_Int64 nPointer = reinterpret_cast< sal_Int64 >(
- static_cast< jvmaccess::UnoVirtualMachine * >(0));
- val.Value >>= nPointer;
- m_xUnoVirtualMachine =
- reinterpret_cast< jvmaccess::UnoVirtualMachine * >(nPointer);
- } else {
- OSL_ENSURE(
- sizeof (sal_Int64) >= sizeof (jvmaccess::VirtualMachine *),
- "Pointer cannot be represented as sal_Int64");
- sal_Int64 nPointer = reinterpret_cast< sal_Int64 >(
- static_cast< jvmaccess::VirtualMachine * >(0));
- if (rArguments.getLength() == 1)
- rArguments[0] >>= nPointer;
- rtl::Reference< jvmaccess::VirtualMachine > vm(
- reinterpret_cast< jvmaccess::VirtualMachine * >(nPointer));
- if (vm.is()) {
- try {
- m_xUnoVirtualMachine = new jvmaccess::UnoVirtualMachine(vm, 0);
- } catch (jvmaccess::UnoVirtualMachine::CreationException &) {
- throw css::uno::RuntimeException(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "jvmaccess::UnoVirtualMachine::CreationException")),
- static_cast< cppu::OWeakObject * >(this));
- }
- }
- }
- if (!m_xUnoVirtualMachine.is()) {
- throw css::lang::IllegalArgumentException(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "sequence of exactly one any containing either (a) a"
- " com.sun.star.beans.NamedValue with Name"
- " \"UnoVirtualMachine\" and Value a hyper representing a"
- " non-null pointer to a jvmaccess:UnoVirtualMachine, or (b)"
- " a hyper representing a non-null pointer to a"
- " jvmaccess::VirtualMachine required")),
- static_cast< cppu::OWeakObject * >(this), 0);
- }
- m_xVirtualMachine = m_xUnoVirtualMachine->getVirtualMachine();
-}
-
-rtl::OUString SAL_CALL JavaVirtualMachine::getImplementationName()
- throw (css::uno::RuntimeException)
-{
- return serviceGetImplementationName();
-}
-
-sal_Bool SAL_CALL
-JavaVirtualMachine::supportsService(rtl::OUString const & rServiceName)
- throw (css::uno::RuntimeException)
-{
- css::uno::Sequence< rtl::OUString > aNames(getSupportedServiceNames());
- for (sal_Int32 i = 0; i < aNames.getLength(); ++i)
- if (aNames[i] == rServiceName)
- return true;
- return false;
-}
-
-css::uno::Sequence< rtl::OUString > SAL_CALL
-JavaVirtualMachine::getSupportedServiceNames()
- throw (css::uno::RuntimeException)
-{
- return serviceGetSupportedServiceNames();
-}
-
-css::uno::Any SAL_CALL
-JavaVirtualMachine::getJavaVM(css::uno::Sequence< sal_Int8 > const & rProcessId)
- throw (css::uno::RuntimeException)
-{
- osl::MutexGuard aGuard(*this);
- if (m_bDisposed)
- throw css::lang::DisposedException(
- rtl::OUString(), static_cast< cppu::OWeakObject * >(this));
- css::uno::Sequence< sal_Int8 > aId(16);
- rtl_getGlobalProcessId(reinterpret_cast< sal_uInt8 * >(aId.getArray()));
- enum ReturnType {
- RETURN_JAVAVM, RETURN_VIRTUALMACHINE, RETURN_UNOVIRTUALMACHINE };
- ReturnType returnType =
- rProcessId.getLength() == 17 && rProcessId[16] == 0
- ? RETURN_VIRTUALMACHINE
- : rProcessId.getLength() == 17 && rProcessId[16] == 1
- ? RETURN_UNOVIRTUALMACHINE
- : RETURN_JAVAVM;
- css::uno::Sequence< sal_Int8 > aProcessId(rProcessId);
- if (returnType != RETURN_JAVAVM)
- aProcessId.realloc(16);
- if (aId != aProcessId)
- return css::uno::Any();
-
- while (!m_xVirtualMachine.is()) // retry until successful
- {
- // This is the second attempt to create Java. m_bDontCreateJvm is
- // set which means instantiating the JVM might crash.
- if (m_bDontCreateJvm)
- //throw css::uno::RuntimeException();
- return css::uno::Any();
-
- stoc_javavm::JVM aJvm;
- initVMConfiguration(&aJvm, m_xContext->getServiceManager(),
- m_xContext);
- //Create the JavaVMOption array
- const std::vector<rtl::OUString> & props = aJvm.getProperties();
- boost::scoped_array<JavaVMOption> sarOptions(
- new JavaVMOption[props.size()]);
- JavaVMOption * arOptions = sarOptions.get();
- //Create an array that contains the strings which are passed
- //into the options
- boost::scoped_array<rtl::OString> sarPropStrings(
- new rtl::OString[props.size()]);
- rtl::OString * arPropStrings = sarPropStrings.get();
-
- rtl::OString sJavaOption("-");
- typedef std::vector<rtl::OUString>::const_iterator cit;
- int index = 0;
- for (cit i = props.begin(); i != props.end(); ++i)
- {
- rtl::OString sOption = rtl::OUStringToOString(
- *i, osl_getThreadTextEncoding());
-
- if (!sOption.matchIgnoreAsciiCase(sJavaOption, 0))
- arPropStrings[index]= rtl::OString("-D") + sOption;
- else
- arPropStrings[index] = sOption;
-
- arOptions[index].optionString = (sal_Char*)arPropStrings[index].getStr();
- arOptions[index].extraInfo = 0;
- index ++;
- }
-
- JNIEnv * pMainThreadEnv = 0;
- javaFrameworkError errcode = JFW_E_NONE;
- errcode = jfw_startVM(arOptions, index, & m_pJavaVm,
- & pMainThreadEnv);
-
- bool bStarted = false;
- switch (errcode)
- {
- case JFW_E_NONE: bStarted = true; break;
- case JFW_E_NO_SELECT:
- {
- // No Java configured. We silenty run the java configuration
- // Java.
- javaFrameworkError errFind = jfw_findAndSelectJRE( NULL );
- if (errFind == JFW_E_NONE)
- {
- continue;
- }
- else if (errFind == JFW_E_NO_JAVA_FOUND)
- {
-
- //Warning MessageBox:
- //%PRODUCTNAME requires a Java runtime environment (JRE) to perform this task.
- //Please install a JRE and restart %PRODUCTNAME.
- css::java::JavaNotFoundException exc(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "JavaVirtualMachine::getJavaVM failed because"
- " No suitable JRE found!")),
- static_cast< cppu::OWeakObject * >(this));
- askForRetry(css::uno::makeAny(exc));
- return css::uno::Any();
- }
- else
- {
- //An unexpected error occurred
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "[JavaVirtualMachine]:An unexpected error occurred"
- " while searching for a Java!")), 0);
- }
- }
- case JFW_E_INVALID_SETTINGS:
- {
- //Warning MessageBox:
- // The %PRODUCTNAME configuration has been changed. Under Tools
- // - Options - %PRODUCTNAME - Java, select the Java runtime environment
- // you want to have used by %PRODUCTNAME.
- css::java::InvalidJavaSettingsException exc(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "JavaVirtualMachine::getJavaVM failed because"
- " Java settings have changed!")),
- static_cast< cppu::OWeakObject * >(this));
- askForRetry(css::uno::makeAny(exc));
- return css::uno::Any();
- }
- case JFW_E_JAVA_DISABLED:
- {
- //QueryBox:
- //%PRODUCTNAME requires a Java runtime environment (JRE) to perform
- //this task. However, use of a JRE has been disabled. Do you want to
- //enable the use of a JRE now?
- css::java::JavaDisabledException exc(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "JavaVirtualMachine::getJavaVM failed because"
- " Java is disabled!")),
- static_cast< cppu::OWeakObject * >(this));
- if( ! askForRetry(css::uno::makeAny(exc)))
- return css::uno::Any();
- continue;
- }
- case JFW_E_VM_CREATION_FAILED:
- {
- //If the creation failed because the JRE has been uninstalled then
- //we search another one. As long as there is a javaldx, we should
- //never come into this situation. javaldx checks alway if the JRE
- //still exist.
- JavaInfo * pJavaInfo = NULL;
- if (JFW_E_NONE == jfw_getSelectedJRE(&pJavaInfo))
- {
- sal_Bool bExist = sal_False;
- if (JFW_E_NONE == jfw_existJRE(pJavaInfo, &bExist))
- {
- if (bExist == sal_False
- && ! (pJavaInfo->nRequirements & JFW_REQUIRE_NEEDRESTART))
- {
- javaFrameworkError errFind = jfw_findAndSelectJRE( NULL );
- if (errFind == JFW_E_NONE)
- {
- continue;
- }
- }
- }
- }
-
- jfw_freeJavaInfo(pJavaInfo);
- //
- //Error: %PRODUCTNAME requires a Java
- //runtime environment (JRE) to perform this task. The selected JRE
- //is defective. Please select another version or install a new JRE
- //and select it under Tools - Options - %PRODUCTNAME - Java.
- css::java::JavaVMCreationFailureException exc(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "JavaVirtualMachine::getJavaVM failed because"
- " Java is defective!")),
- static_cast< cppu::OWeakObject * >(this), 0);
- askForRetry(css::uno::makeAny(exc));
- return css::uno::Any();
- }
- case JFW_E_RUNNING_JVM:
- {
- //This service should make sure that we do not start java twice.
- OSL_ASSERT(0);
- break;
- }
- case JFW_E_NEED_RESTART:
- {
- //Error:
- //For the selected Java runtime environment to work properly,
- //%PRODUCTNAME must be restarted. Please restart %PRODUCTNAME now.
- css::java::RestartRequiredException exc(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "JavaVirtualMachine::getJavaVM failed because"
- "Office must be restarted before Java can be used!")),
- static_cast< cppu::OWeakObject * >(this));
- askForRetry(css::uno::makeAny(exc));
- return css::uno::Any();
- }
- default:
- //RuntimeException: error is somewhere in the java framework.
- //An unexpected error occurred
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "[JavaVirtualMachine]:An unexpected error occurred"
- " while starting Java!")), 0);
- }
-
- if (bStarted)
- {
- {
- DetachCurrentThread detach(m_pJavaVm);
- // necessary to make debugging work; this thread will be
- // suspended when the destructor of detach returns
- m_xVirtualMachine = new jvmaccess::VirtualMachine(
- m_pJavaVm, JNI_VERSION_1_2, true, pMainThreadEnv);
- setUpUnoVirtualMachine(pMainThreadEnv);
- }
- // Listen for changes in the configuration (e.g. proxy settings):
- // TODO this is done too late; changes to the configuration done
- // after the above call to initVMConfiguration are lost
- registerConfigChangesListener();
-
- break;
- }
- }
- if (!m_xUnoVirtualMachine.is()) {
- try {
- jvmaccess::VirtualMachine::AttachGuard guard(m_xVirtualMachine);
- setUpUnoVirtualMachine(guard.getEnvironment());
- } catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &) {
- throw css::uno::RuntimeException(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "jvmaccess::VirtualMachine::AttachGuard::"
- "CreationException occurred")),
- static_cast< cppu::OWeakObject * >(this));
- }
- }
- switch (returnType) {
- default: // RETURN_JAVAVM
- if (m_pJavaVm == 0) {
- throw css::uno::RuntimeException(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "JavaVirtualMachine service was initialized in a way"
- " that the requested JavaVM pointer is not available")),
- static_cast< cppu::OWeakObject * >(this));
- }
- return css::uno::makeAny(reinterpret_cast< sal_IntPtr >(m_pJavaVm));
- case RETURN_VIRTUALMACHINE:
- OSL_ASSERT(sizeof (sal_Int64) >= sizeof (jvmaccess::VirtualMachine *));
- return css::uno::makeAny(
- reinterpret_cast< sal_Int64 >(
- m_xUnoVirtualMachine->getVirtualMachine().get()));
- case RETURN_UNOVIRTUALMACHINE:
- OSL_ASSERT(sizeof (sal_Int64) >= sizeof (jvmaccess::VirtualMachine *));
- return css::uno::makeAny(
- reinterpret_cast< sal_Int64 >(m_xUnoVirtualMachine.get()));
- }
-}
-
-sal_Bool SAL_CALL JavaVirtualMachine::isVMStarted()
- throw (css::uno::RuntimeException)
-{
- osl::MutexGuard aGuard(*this);
- if (m_bDisposed)
- throw css::lang::DisposedException(
- rtl::OUString(), static_cast< cppu::OWeakObject * >(this));
- return m_xUnoVirtualMachine.is();
-}
-
-sal_Bool SAL_CALL JavaVirtualMachine::isVMEnabled()
- throw (css::uno::RuntimeException)
-{
- {
- osl::MutexGuard aGuard(*this);
- if (m_bDisposed)
- throw css::lang::DisposedException(
- rtl::OUString(), static_cast< cppu::OWeakObject * >(this));
- }
-// stoc_javavm::JVM aJvm;
-// initVMConfiguration(&aJvm, m_xContext->getServiceManager(), m_xContext);
-// return aJvm.isEnabled();
- //ToDo
- sal_Bool bEnabled = sal_False;
- if (jfw_getEnabled( & bEnabled) != JFW_E_NONE)
- throw css::uno::RuntimeException();
- return bEnabled;
-}
-
-sal_Bool SAL_CALL JavaVirtualMachine::isThreadAttached()
- throw (css::uno::RuntimeException)
-{
- osl::MutexGuard aGuard(*this);
- if (m_bDisposed)
- throw css::lang::DisposedException(
- rtl::OUString(), static_cast< cppu::OWeakObject * >(this));
- // TODO isThreadAttached only returns true if the thread was attached via
- // registerThread:
- GuardStack * pStack
- = static_cast< GuardStack * >(m_aAttachGuards.getData());
- return pStack != 0 && !pStack->empty();
-}
-
-void SAL_CALL JavaVirtualMachine::registerThread()
- throw (css::uno::RuntimeException)
-{
- osl::MutexGuard aGuard(*this);
- if (m_bDisposed)
- throw css::lang::DisposedException(
- rtl::OUString(), static_cast< cppu::OWeakObject * >(this));
- if (!m_xUnoVirtualMachine.is())
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "JavaVirtualMachine::registerThread:"
- " null VirtualMachine")),
- static_cast< cppu::OWeakObject * >(this));
- GuardStack * pStack
- = static_cast< GuardStack * >(m_aAttachGuards.getData());
- if (pStack == 0)
- {
- pStack = new GuardStack;
- m_aAttachGuards.setData(pStack);
- }
- try
- {
- pStack->push(
- new jvmaccess::VirtualMachine::AttachGuard(
- m_xUnoVirtualMachine->getVirtualMachine()));
- }
- catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &)
- {
- throw css::uno::RuntimeException(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "JavaVirtualMachine::registerThread: jvmaccess::"
- "VirtualMachine::AttachGuard::CreationException")),
- static_cast< cppu::OWeakObject * >(this));
- }
-}
-
-void SAL_CALL JavaVirtualMachine::revokeThread()
- throw (css::uno::RuntimeException)
-{
- osl::MutexGuard aGuard(*this);
- if (m_bDisposed)
- throw css::lang::DisposedException(
- rtl::OUString(), static_cast< cppu::OWeakObject * >(this));
- if (!m_xUnoVirtualMachine.is())
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "JavaVirtualMachine::revokeThread:"
- " null VirtualMachine")),
- static_cast< cppu::OWeakObject * >(this));
- GuardStack * pStack
- = static_cast< GuardStack * >(m_aAttachGuards.getData());
- if (pStack == 0 || pStack->empty())
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "JavaVirtualMachine::revokeThread:"
- " no matching registerThread")),
- static_cast< cppu::OWeakObject * >(this));
- delete pStack->top();
- pStack->pop();
-}
-
-void SAL_CALL
-JavaVirtualMachine::disposing(css::lang::EventObject const & rSource)
- throw (css::uno::RuntimeException)
-{
- osl::MutexGuard aGuard(*this);
- if (rSource.Source == m_xInetConfiguration)
- m_xInetConfiguration.clear();
- if (rSource.Source == m_xJavaConfiguration)
- m_xJavaConfiguration.clear();
-}
-
-void SAL_CALL JavaVirtualMachine::elementInserted(
- css::container::ContainerEvent const &)
- throw (css::uno::RuntimeException)
-{}
-
-void SAL_CALL JavaVirtualMachine::elementRemoved(
- css::container::ContainerEvent const &)
- throw (css::uno::RuntimeException)
-{}
-
-// If a user changes the setting, for example for proxy settings, then this
-// function will be called from the configuration manager. Even if the .xml
-// file does not contain an entry yet and that entry has to be inserted, this
-// function will be called. We call java.lang.System.setProperty for the new
-// values.
-void SAL_CALL JavaVirtualMachine::elementReplaced(
- css::container::ContainerEvent const & rEvent)
- throw (css::uno::RuntimeException)
-{
- // TODO Using the new value stored in rEvent is wrong here. If two threads
- // receive different elementReplaced calls in quick succession, it is
- // unspecified which changes the JVM's system properties last. A correct
- // solution must atomically (i.e., protected by a mutex) read the latest
- // value from the configuration and set it as a system property at the JVM.
-
- rtl::OUString aAccessor;
- rEvent.Accessor >>= aAccessor;
- rtl::OUString aPropertyName;
- rtl::OUString aPropertyName2;
- rtl::OUString aPropertyValue;
- bool bSecurityChanged = false;
- if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ooInetProxyType")))
- {
- // Proxy none, manually
- sal_Int32 value = 0;
- rEvent.Element >>= value;
- setINetSettingsInVM(value != 0);
- return;
- }
- else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
- "ooInetHTTPProxyName")))
- {
- aPropertyName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "http.proxyHost"));
- rEvent.Element >>= aPropertyValue;
- }
- else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
- "ooInetHTTPProxyPort")))
- {
- aPropertyName
- = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("http.proxyPort"));
- sal_Int32 n = 0;
- rEvent.Element >>= n;
- aPropertyValue = rtl::OUString::valueOf(n);
- }
- else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
- "ooInetHTTPSProxyName")))
- {
- aPropertyName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "https.proxyHost"));
- rEvent.Element >>= aPropertyValue;
- }
- else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
- "ooInetHTTPSProxyPort")))
- {
- aPropertyName
- = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("https.proxyPort"));
- sal_Int32 n = 0;
- rEvent.Element >>= n;
- aPropertyValue = rtl::OUString::valueOf(n);
- }
- else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
- "ooInetFTPProxyName")))
- {
- aPropertyName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "ftp.proxyHost"));
- rEvent.Element >>= aPropertyValue;
- }
- else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
- "ooInetFTPProxyPort")))
- {
- aPropertyName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "ftp.proxyPort"));
- sal_Int32 n = 0;
- rEvent.Element >>= n;
- aPropertyValue = rtl::OUString::valueOf(n);
- }
- else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
- "ooInetNoProxy")))
- {
- aPropertyName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "http.nonProxyHosts"));
- aPropertyName2 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "ftp.nonProxyHosts"));
- rEvent.Element >>= aPropertyValue;
- aPropertyValue = aPropertyValue.replace(';', '|');
- }
- else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("NetAccess")))
- {
- aPropertyName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "appletviewer.security.mode"));
- sal_Int32 n = 0;
- if (rEvent.Element >>= n)
- switch (n)
- {
- case 0:
- aPropertyValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "host"));
- break;
- case 1:
- aPropertyValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "unrestricted"));
- break;
- case 3:
- aPropertyValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "none"));
- break;
- }
- else
- return;
- bSecurityChanged = true;
- }
- else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Security")))
- {
- aPropertyName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "stardiv.security.disableSecurity"));
- sal_Bool b = sal_Bool();
- if (rEvent.Element >>= b)
- if (b)
- aPropertyValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "false"));
- else
- aPropertyValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "true"));
- else
- return;
- bSecurityChanged = true;
- }
- else
- return;
-
- rtl::Reference< jvmaccess::VirtualMachine > xVirtualMachine;
- {
- osl::MutexGuard aGuard(*this);
- if (m_xUnoVirtualMachine.is()) {
- xVirtualMachine = m_xUnoVirtualMachine->getVirtualMachine();
- }
- }
- if (xVirtualMachine.is())
- {
- try
- {
- jvmaccess::VirtualMachine::AttachGuard aAttachGuard(
- xVirtualMachine);
- JNIEnv * pJNIEnv = aAttachGuard.getEnvironment();
-
- // call java.lang.System.setProperty
- // String setProperty( String key, String value)
- jclass jcSystem= pJNIEnv->FindClass("java/lang/System");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:FindClass java/lang/System")), 0);
- jmethodID jmSetProps= pJNIEnv->GetStaticMethodID( jcSystem, "setProperty","(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:GetStaticMethodID java.lang.System.setProperty")), 0);
-
- jstring jsPropName= pJNIEnv->NewString( aPropertyName.getStr(), aPropertyName.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
-
- // remove the property if it does not have a value ( user left the dialog field empty)
- // or if the port is set to 0
- aPropertyValue= aPropertyValue.trim();
- if(
- aPropertyValue.getLength() == 0 ||
- (
- (
- aPropertyName.equals( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ftp.proxyPort"))) ||
- aPropertyName.equals( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("http.proxyPort"))) /*||
- aPropertyName.equals( OUString( RTL_CONSTASCII_USTRINGPARAM("socksProxyPort")))*/
- ) &&
- aPropertyValue.equals(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("0")))
- )
- )
- {
- // call java.lang.System.getProperties
- jmethodID jmGetProps= pJNIEnv->GetStaticMethodID( jcSystem, "getProperties","()Ljava/util/Properties;");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:GetStaticMethodID java.lang.System.getProperties")), 0);
- jobject joProperties= pJNIEnv->CallStaticObjectMethod( jcSystem, jmGetProps);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallStaticObjectMethod java.lang.System.getProperties")), 0);
- // call java.util.Properties.remove
- jclass jcProperties= pJNIEnv->FindClass("java/util/Properties");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:FindClass java/util/Properties")), 0);
- jmethodID jmRemove= pJNIEnv->GetMethodID( jcProperties, "remove", "(Ljava/lang/Object;)Ljava/lang/Object;");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:GetMethodID java.util.Properties.remove")), 0);
- pJNIEnv->CallObjectMethod( joProperties, jmRemove, jsPropName);
-
- // special calse for ftp.nonProxyHosts and http.nonProxyHosts. The office only
- // has a value for two java properties
- if (aPropertyName2.getLength() > 0)
- {
- jstring jsPropName2= pJNIEnv->NewString( aPropertyName2.getStr(), aPropertyName2.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- pJNIEnv->CallObjectMethod( joProperties, jmRemove, jsPropName2);
- }
- }
- else
- {
- // Change the Value of the property
- jstring jsPropValue= pJNIEnv->NewString( aPropertyValue.getStr(), aPropertyValue.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- pJNIEnv->CallStaticObjectMethod( jcSystem, jmSetProps, jsPropName, jsPropValue);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallStaticObjectMethod java.lang.System.setProperty")), 0);
-
- // special calse for ftp.nonProxyHosts and http.nonProxyHosts. The office only
- // has a value for two java properties
- if (aPropertyName2.getLength() > 0)
- {
- jstring jsPropName2= pJNIEnv->NewString( aPropertyName2.getStr(), aPropertyName2.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- jsPropValue= pJNIEnv->NewString( aPropertyValue.getStr(), aPropertyValue.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- pJNIEnv->CallStaticObjectMethod( jcSystem, jmSetProps, jsPropName2, jsPropValue);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallStaticObjectMethod java.lang.System.setProperty")), 0);
- }
- }
-
- // If the settings for Security and NetAccess changed then we have to notify the SandboxSecurity
- // SecurityManager
- // call System.getSecurityManager()
- if (bSecurityChanged)
- {
- jmethodID jmGetSecur= pJNIEnv->GetStaticMethodID( jcSystem,"getSecurityManager","()Ljava/lang/SecurityManager;");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:GetStaticMethodID java.lang.System.getSecurityManager")), 0);
- jobject joSecur= pJNIEnv->CallStaticObjectMethod( jcSystem, jmGetSecur);
- if (joSecur != 0)
- {
- // Make sure the SecurityManager is our SandboxSecurity
- // FindClass("com.sun.star.lib.sandbox.SandboxSecurityManager" only worked at the first time
- // this code was executed. Maybe it is a security feature. However, all attempts to debug the
- // SandboxSecurity class (maybe the VM invokes checkPackageAccess) failed.
-// jclass jcSandboxSec= pJNIEnv->FindClass("com.sun.star.lib.sandbox.SandboxSecurity");
-// if(pJNIEnv->ExceptionOccurred()) throw RuntimeException(OUSTR("JNI:FindClass com.sun.star.lib.sandbox.SandboxSecurity"), Reference<XInterface>());
-// jboolean bIsSand= pJNIEnv->IsInstanceOf( joSecur, jcSandboxSec);
- // The SecurityManagers class Name must be com.sun.star.lib.sandbox.SandboxSecurity
- jclass jcSec= pJNIEnv->GetObjectClass( joSecur);
- jclass jcClass= pJNIEnv->FindClass("java/lang/Class");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:FindClass java.lang.Class")), 0);
- jmethodID jmName= pJNIEnv->GetMethodID( jcClass,"getName","()Ljava/lang/String;");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:GetMethodID java.lang.Class.getName")), 0);
- jstring jsClass= (jstring) pJNIEnv->CallObjectMethod( jcSec, jmName);
- const jchar* jcharName= pJNIEnv->GetStringChars( jsClass, NULL);
- rtl::OUString sName( jcharName);
- jboolean bIsSandbox;
- if (sName == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.lib.sandbox.SandboxSecurity")))
- bIsSandbox= JNI_TRUE;
- else
- bIsSandbox= JNI_FALSE;
- pJNIEnv->ReleaseStringChars( jsClass, jcharName);
-
- if (bIsSandbox == JNI_TRUE)
- {
- // call SandboxSecurity.reset
- jmethodID jmReset= pJNIEnv->GetMethodID( jcSec,"reset","()V");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:GetMethodID com.sun.star.lib.sandbox.SandboxSecurity.reset")), 0);
- pJNIEnv->CallVoidMethod( joSecur, jmReset);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallVoidMethod com.sun.star.lib.sandbox.SandboxSecurity.reset")), 0);
- }
- }
- }
- }
- catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &)
- {
- throw css::uno::RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "jvmaccess::VirtualMachine::AttachGuard::"
- "CreationException")),
- 0);
- }
- }
-}
-
-JavaVirtualMachine::~JavaVirtualMachine()
-{
- if (m_xInetConfiguration.is())
- // We should never get here, but just in case...
- try
- {
- m_xInetConfiguration->removeContainerListener(this);
- }
- catch (css::uno::Exception &)
- {
- OSL_FAIL("com.sun.star.uno.Exception caught");
- }
- if (m_xJavaConfiguration.is())
- // We should never get here, but just in case...
- try
- {
- m_xJavaConfiguration->removeContainerListener(this);
- }
- catch (css::uno::Exception &)
- {
- OSL_FAIL("com.sun.star.uno.Exception caught");
- }
-}
-
-void SAL_CALL JavaVirtualMachine::disposing()
-{
- css::uno::Reference< css::container::XContainer > xContainer1;
- css::uno::Reference< css::container::XContainer > xContainer2;
- {
- osl::MutexGuard aGuard(*this);
- m_bDisposed = true;
- xContainer1 = m_xInetConfiguration;
- m_xInetConfiguration.clear();
- xContainer2 = m_xJavaConfiguration;
- m_xJavaConfiguration.clear();
- }
- if (xContainer1.is())
- xContainer1->removeContainerListener(this);
- if (xContainer2.is())
- xContainer2->removeContainerListener(this);
-}
-
-/*We listen to changes in the configuration. For example, the user changes the proxy
- settings in the options dialog (menu tools). Then we are notified of this change and
- if the java vm is already running we change the properties (System.lang.System.setProperties)
- through JNI.
- To receive notifications this class implements XContainerListener.
-*/
-void JavaVirtualMachine::registerConfigChangesListener()
-{
- try
- {
- css::uno::Reference< css::lang::XMultiServiceFactory > xConfigProvider(
- m_xContext->getServiceManager()->createInstanceWithContext( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.configuration.ConfigurationProvider")), m_xContext), css::uno::UNO_QUERY);
-
- if (xConfigProvider.is())
- {
- // We register this instance as listener to changes in org.openoffice.Inet/Settings
- // arguments for ConfigurationAccess
- css::uno::Sequence< css::uno::Any > aArguments(2);
- aArguments[0] <<= css::beans::PropertyValue(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")),
- 0,
- css::uno::makeAny(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Inet/Settings"))),
- css::beans::PropertyState_DIRECT_VALUE);
- // depth: -1 means unlimited
- aArguments[1] <<= css::beans::PropertyValue(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("depth")),
- 0,
- css::uno::makeAny( (sal_Int32)-1),
- css::beans::PropertyState_DIRECT_VALUE);
-
- m_xInetConfiguration
- = css::uno::Reference< css::container::XContainer >(
- xConfigProvider->createInstanceWithArguments(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.configuration.ConfigurationAccess")),
- aArguments),
- css::uno::UNO_QUERY);
-
- if (m_xInetConfiguration.is())
- m_xInetConfiguration->addContainerListener(this);
-
- // now register as listener to changes in org.openoffice.Java/VirtualMachine
- css::uno::Sequence< css::uno::Any > aArguments2(2);
- aArguments2[0] <<= css::beans::PropertyValue(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")),
- 0,
- css::uno::makeAny(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Java/VirtualMachine"))),
- css::beans::PropertyState_DIRECT_VALUE);
- // depth: -1 means unlimited
- aArguments2[1] <<= css::beans::PropertyValue(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("depth")),
- 0,
- css::uno::makeAny( (sal_Int32)-1),
- css::beans::PropertyState_DIRECT_VALUE);
-
- m_xJavaConfiguration
- = css::uno::Reference< css::container::XContainer >(
- xConfigProvider->createInstanceWithArguments(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.configuration.ConfigurationAccess")),
- aArguments2),
- css::uno::UNO_QUERY);
-
- if (m_xJavaConfiguration.is())
- m_xJavaConfiguration->addContainerListener(this);
- }
- }catch( css::uno::Exception & e)
- {
-#if OSL_DEBUG_LEVEL > 1
- rtl::OString message = rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_TRACE("javavm.cxx: could not set up listener for Configuration because of >%s<", message.getStr());
-#else
- (void) e; // unused
-#endif
- }
-}
-
-// param true: all Inet setting are set as Java Properties on a live VM.
-// false: the Java net properties are set to empty value.
-void JavaVirtualMachine::setINetSettingsInVM(bool set_reset)
-{
- osl::MutexGuard aGuard(*this);
- try
- {
- if (m_xUnoVirtualMachine.is())
- {
- jvmaccess::VirtualMachine::AttachGuard aAttachGuard(
- m_xUnoVirtualMachine->getVirtualMachine());
- JNIEnv * pJNIEnv = aAttachGuard.getEnvironment();
-
- // The Java Properties
- rtl::OUString sFtpProxyHost(RTL_CONSTASCII_USTRINGPARAM("ftp.proxyHost") );
- rtl::OUString sFtpProxyPort(RTL_CONSTASCII_USTRINGPARAM("ftp.proxyPort") );
- rtl::OUString sFtpNonProxyHosts (RTL_CONSTASCII_USTRINGPARAM("ftp.nonProxyHosts"));
- rtl::OUString sHttpProxyHost(RTL_CONSTASCII_USTRINGPARAM("http.proxyHost") );
- rtl::OUString sHttpProxyPort(RTL_CONSTASCII_USTRINGPARAM("http.proxyPort") );
- rtl::OUString sHttpNonProxyHosts(RTL_CONSTASCII_USTRINGPARAM("http.nonProxyHosts"));
-
- // creat Java Properties as JNI strings
- jstring jsFtpProxyHost= pJNIEnv->NewString( sFtpProxyHost.getStr(), sFtpProxyHost.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- jstring jsFtpProxyPort= pJNIEnv->NewString( sFtpProxyPort.getStr(), sFtpProxyPort.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- jstring jsFtpNonProxyHosts= pJNIEnv->NewString( sFtpNonProxyHosts.getStr(), sFtpNonProxyHosts.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- jstring jsHttpProxyHost= pJNIEnv->NewString( sHttpProxyHost.getStr(), sHttpProxyHost.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- jstring jsHttpProxyPort= pJNIEnv->NewString( sHttpProxyPort.getStr(), sHttpProxyPort.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- jstring jsHttpNonProxyHosts= pJNIEnv->NewString( sHttpNonProxyHosts.getStr(), sHttpNonProxyHosts.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
-
- // prepare java.lang.System.setProperty
- jclass jcSystem= pJNIEnv->FindClass("java/lang/System");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:FindClass java/lang/System")), 0);
- jmethodID jmSetProps= pJNIEnv->GetStaticMethodID( jcSystem, "setProperty","(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:GetStaticMethodID java.lang.System.setProperty")), 0);
-
- // call java.lang.System.getProperties
- jmethodID jmGetProps= pJNIEnv->GetStaticMethodID( jcSystem, "getProperties","()Ljava/util/Properties;");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:GetStaticMethodID java.lang.System.getProperties")), 0);
- jobject joProperties= pJNIEnv->CallStaticObjectMethod( jcSystem, jmGetProps);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallStaticObjectMethod java.lang.System.getProperties")), 0);
- // prepare java.util.Properties.remove
- jclass jcProperties= pJNIEnv->FindClass("java/util/Properties");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:FindClass java/util/Properties")), 0);
-
- if (set_reset)
- {
- // Set all network properties with the VM
- JVM jvm;
- getINetPropsFromConfig( &jvm, m_xContext->getServiceManager(), m_xContext);
- const ::std::vector< rtl::OUString> & Props = jvm.getProperties();
- typedef ::std::vector< rtl::OUString >::const_iterator C_IT;
-
- for( C_IT i= Props.begin(); i != Props.end(); i++)
- {
- rtl::OUString prop= *i;
- sal_Int32 index= prop.indexOf( (sal_Unicode)'=');
- rtl::OUString propName= prop.copy( 0, index);
- rtl::OUString propValue= prop.copy( index + 1);
-
- if( propName.equals( sFtpProxyHost))
- {
- jstring jsVal= pJNIEnv->NewString( propValue.getStr(), propValue.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- pJNIEnv->CallStaticObjectMethod( jcSystem, jmSetProps, jsFtpProxyHost, jsVal);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallStaticObjectMethod java.lang.System.setProperty")), 0);
- }
- else if( propName.equals( sFtpProxyPort))
- {
- jstring jsVal= pJNIEnv->NewString( propValue.getStr(), propValue.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- pJNIEnv->CallStaticObjectMethod( jcSystem, jmSetProps, jsFtpProxyPort, jsVal);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallStaticObjectMethod java.lang.System.setProperty")), 0);
- }
- else if( propName.equals( sFtpNonProxyHosts))
- {
- jstring jsVal= pJNIEnv->NewString( propValue.getStr(), propValue.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- pJNIEnv->CallStaticObjectMethod( jcSystem, jmSetProps, jsFtpNonProxyHosts, jsVal);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallStaticObjectMethod java.lang.System.setProperty")), 0);
- }
- else if( propName.equals( sHttpProxyHost))
- {
- jstring jsVal= pJNIEnv->NewString( propValue.getStr(), propValue.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- pJNIEnv->CallStaticObjectMethod( jcSystem, jmSetProps, jsHttpProxyHost, jsVal);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallStaticObjectMethod java.lang.System.setProperty")), 0);
- }
- else if( propName.equals( sHttpProxyPort))
- {
- jstring jsVal= pJNIEnv->NewString( propValue.getStr(), propValue.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- pJNIEnv->CallStaticObjectMethod( jcSystem, jmSetProps, jsHttpProxyPort, jsVal);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallStaticObjectMethod java.lang.System.setProperty")), 0);
- }
- else if( propName.equals( sHttpNonProxyHosts))
- {
- jstring jsVal= pJNIEnv->NewString( propValue.getStr(), propValue.getLength());
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:NewString")), 0);
- pJNIEnv->CallStaticObjectMethod( jcSystem, jmSetProps, jsHttpNonProxyHosts, jsVal);
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:CallStaticObjectMethod java.lang.System.setProperty")), 0);
- }
- }
- }
- else
- {
- // call java.util.Properties.remove
- jmethodID jmRemove= pJNIEnv->GetMethodID( jcProperties, "remove", "(Ljava/lang/Object;)Ljava/lang/Object;");
- if(pJNIEnv->ExceptionOccurred()) throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JNI:GetMethodID java.util.Property.remove")), 0);
- pJNIEnv->CallObjectMethod( joProperties, jmRemove, jsFtpProxyHost);
- pJNIEnv->CallObjectMethod( joProperties, jmRemove, jsFtpProxyPort);
- pJNIEnv->CallObjectMethod( joProperties, jmRemove, jsFtpNonProxyHosts);
- pJNIEnv->CallObjectMethod( joProperties, jmRemove, jsHttpProxyHost);
- pJNIEnv->CallObjectMethod( joProperties, jmRemove, jsHttpProxyPort);
- pJNIEnv->CallObjectMethod( joProperties, jmRemove, jsHttpNonProxyHosts);
- }
- }
- }
- catch (css::uno::RuntimeException &)
- {
- OSL_FAIL("RuntimeException");
- }
- catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &)
- {
- OSL_FAIL("jvmaccess::VirtualMachine::AttachGuard::CreationException");
- }
-}
-
-void JavaVirtualMachine::setUpUnoVirtualMachine(JNIEnv * environment) {
- css::uno::Reference< css::util::XMacroExpander > exp;
- if (!(m_xContext->getValueByName(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "/singletons/com.sun.star.util.theMacroExpander")))
- >>= exp)
- || !exp.is())
- {
- throw css::uno::RuntimeException(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "component context fails to supply singleton"
- " com.sun.star.util.theMacroExpander of type"
- " com.sun.star.util.XMacroExpander")),
- m_xContext);
- }
- rtl::OUString baseUrl;
- try {
- baseUrl = exp->expandMacros(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("$URE_INTERNAL_JAVA_DIR/")));
- } catch (css::lang::IllegalArgumentException &) {
- throw css::uno::RuntimeException(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "com::sun::star::lang::IllegalArgumentException")),
- static_cast< cppu::OWeakObject * >(this));
- }
- rtl::OUString classPath;
- try {
- classPath = exp->expandMacros(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("$URE_INTERNAL_JAVA_CLASSPATH")));
- } catch (css::lang::IllegalArgumentException &) {}
- jclass class_URLClassLoader = environment->FindClass(
- "java/net/URLClassLoader");
- if (class_URLClassLoader == 0) {
- handleJniException(environment);
- }
- jmethodID ctor_URLClassLoader = environment->GetMethodID(
- class_URLClassLoader, "<init>", "([Ljava/net/URL;)V");
- if (ctor_URLClassLoader == 0) {
- handleJniException(environment);
- }
- jclass class_URL = environment->FindClass("java/net/URL");
- if (class_URL == 0) {
- handleJniException(environment);
- }
- jmethodID ctor_URL_1 = environment->GetMethodID(
- class_URL, "<init>", "(Ljava/lang/String;)V");
- if (ctor_URL_1 == 0) {
- handleJniException(environment);
- }
- jvalue args[3];
- args[0].l = environment->NewString(
- static_cast< jchar const * >(baseUrl.getStr()),
- static_cast< jsize >(baseUrl.getLength()));
- if (args[0].l == 0) {
- handleJniException(environment);
- }
- jobject base = environment->NewObjectA(class_URL, ctor_URL_1, args);
- if (base == 0) {
- handleJniException(environment);
- }
- jmethodID ctor_URL_2 = environment->GetMethodID(
- class_URL, "<init>", "(Ljava/net/URL;Ljava/lang/String;)V");
- if (ctor_URL_2 == 0) {
- handleJniException(environment);
- }
- jobjectArray classpath = jvmaccess::ClassPath::translateToUrls(
- m_xContext, environment, classPath);
- if (classpath == 0) {
- handleJniException(environment);
- }
- args[0].l = base;
- args[1].l = environment->NewStringUTF("unoloader.jar");
- if (args[1].l == 0) {
- handleJniException(environment);
- }
- args[0].l = environment->NewObjectA(class_URL, ctor_URL_2, args);
- if (args[0].l == 0) {
- handleJniException(environment);
- }
- args[0].l = environment->NewObjectArray(1, class_URL, args[0].l);
- if (args[0].l == 0) {
- handleJniException(environment);
- }
- jobject cl1 = environment->NewObjectA(
- class_URLClassLoader, ctor_URLClassLoader, args);
- if (cl1 == 0) {
- handleJniException(environment);
- }
- jmethodID method_loadClass = environment->GetMethodID(
- class_URLClassLoader, "loadClass",
- "(Ljava/lang/String;)Ljava/lang/Class;");
- if (method_loadClass == 0) {
- handleJniException(environment);
- }
- args[0].l = environment->NewStringUTF(
- "com.sun.star.lib.unoloader.UnoClassLoader");
- if (args[0].l == 0) {
- handleJniException(environment);
- }
- jclass class_UnoClassLoader = static_cast< jclass >(
- environment->CallObjectMethodA(cl1, method_loadClass, args));
- if (class_UnoClassLoader == 0) {
- handleJniException(environment);
- }
- jmethodID ctor_UnoClassLoader = environment->GetMethodID(
- class_UnoClassLoader, "<init>",
- "(Ljava/net/URL;[Ljava/net/URL;Ljava/lang/ClassLoader;)V");
- if (ctor_UnoClassLoader == 0) {
- handleJniException(environment);
- }
- args[0].l = base;
- args[1].l = classpath;
- args[2].l = cl1;
- jobject cl2 = environment->NewObjectA(
- class_UnoClassLoader, ctor_UnoClassLoader, args);
- if (cl2 == 0) {
- handleJniException(environment);
- }
- try {
- m_xUnoVirtualMachine = new jvmaccess::UnoVirtualMachine(
- m_xVirtualMachine, cl2);
- } catch (jvmaccess::UnoVirtualMachine::CreationException &) {
- throw css::uno::RuntimeException(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "jvmaccess::UnoVirtualMachine::CreationException")),
- static_cast< cppu::OWeakObject * >(this));
- }
-}
-
-void JavaVirtualMachine::handleJniException(JNIEnv * environment) {
- environment->ExceptionClear();
- throw css::uno::RuntimeException(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("JNI exception occurred")),
- static_cast< cppu::OWeakObject * >(this));
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/stoc/source/javavm/javavm.hxx b/stoc/source/javavm/javavm.hxx
deleted file mode 100644
index 78782c2d7..000000000
--- a/stoc/source/javavm/javavm.hxx
+++ /dev/null
@@ -1,175 +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.
- *
- ************************************************************************/
-
-#if !defined INCLUDED_STOC_JAVAVM_JAVAVM_HXX
-#define INCLUDED_STOC_JAVAVM_JAVAVM_HXX
-
-#include "jvmargs.hxx"
-
-#include "com/sun/star/container/XContainerListener.hpp"
-#include "com/sun/star/lang/XInitialization.hpp"
-#include "com/sun/star/java/XJavaThreadRegister_11.hpp"
-#include "com/sun/star/java/XJavaVM.hpp"
-#include "com/sun/star/lang/XServiceInfo.hpp"
-#include "com/sun/star/uno/Reference.hxx"
-#include "cppuhelper/compbase5.hxx"
-#include "osl/thread.hxx"
-#include "rtl/ref.hxx"
-#include <osl/mutex.hxx>
-#include <rtl/ustring.hxx>
-
-namespace com { namespace sun { namespace star {
- namespace container { class XContainer; }
- namespace uno { class XComponentContext; }
-} } }
-namespace jvmaccess {
- class UnoVirtualMachine;
- class VirtualMachine;
-}
-
-namespace stoc_javavm {
-
-bool configureJava(const com::sun::star::uno::Reference<
- com::sun::star::uno::XComponentContext>& xContext);
-// The MS compiler needs a typedef here, so the JavaVirtualMachine ctor can call
-// its base class ctor:
-typedef
-cppu::WeakComponentImplHelper5< com::sun::star::lang::XInitialization,
- com::sun::star::lang::XServiceInfo,
- com::sun::star::java::XJavaVM,
- com::sun::star::java::XJavaThreadRegister_11,
- com::sun::star::container::XContainerListener >
-JavaVirtualMachine_Impl;
-
-class JavaVirtualMachine: private osl::Mutex, public JavaVirtualMachine_Impl
-{
-public:
- explicit JavaVirtualMachine(
- com::sun::star::uno::Reference<
- com::sun::star::uno::XComponentContext > const & rContext);
-
- // XInitialization
- virtual void SAL_CALL
- initialize(com::sun::star::uno::Sequence< com::sun::star::uno::Any > const &
- rArguments)
- throw (com::sun::star::uno::Exception);
-
- // XServiceInfo
- virtual rtl::OUString SAL_CALL getImplementationName()
- throw (com::sun::star::uno::RuntimeException);
-
- virtual sal_Bool SAL_CALL
- supportsService(rtl::OUString const & rServiceName)
- throw (com::sun::star::uno::RuntimeException);
-
- virtual com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL
- getSupportedServiceNames() throw (com::sun::star::uno::RuntimeException);
-
- // XJavaVM
- virtual com::sun::star::uno::Any SAL_CALL
- getJavaVM(com::sun::star::uno::Sequence< sal_Int8 > const & rProcessId)
- throw (com::sun::star::uno::RuntimeException);
-
- virtual sal_Bool SAL_CALL isVMStarted()
- throw (com::sun::star::uno::RuntimeException);
-
- virtual sal_Bool SAL_CALL isVMEnabled()
- throw (com::sun::star::uno::RuntimeException);
-
- // XJavaThreadRegister_11
- virtual sal_Bool SAL_CALL isThreadAttached()
- throw (com::sun::star::uno::RuntimeException);
-
- virtual void SAL_CALL registerThread()
- throw (com::sun::star::uno::RuntimeException);
-
- virtual void SAL_CALL revokeThread()
- throw (com::sun::star::uno::RuntimeException);
-
- // XContainerListener
- virtual void SAL_CALL
- disposing(com::sun::star::lang::EventObject const & rSource)
- throw (com::sun::star::uno::RuntimeException);
-
- virtual void SAL_CALL
- elementInserted(com::sun::star::container::ContainerEvent const & rEvent)
- throw (com::sun::star::uno::RuntimeException);
-
- virtual void SAL_CALL
- elementRemoved(com::sun::star::container::ContainerEvent const & rEvent)
- throw (com::sun::star::uno::RuntimeException);
-
- virtual void SAL_CALL
- elementReplaced(com::sun::star::container::ContainerEvent const & rEvent)
- throw (com::sun::star::uno::RuntimeException);
-
-private:
- JavaVirtualMachine(JavaVirtualMachine &); // not implemented
- void operator =(JavaVirtualMachine); // not implemented
-
- virtual ~JavaVirtualMachine();
-
- virtual void SAL_CALL disposing();
-
- JavaVM * createJavaVM(JVM const & jvm, JNIEnv ** pMainThreadEnv);
- // throws com::sun::star::uno::RuntimeException
-
- void registerConfigChangesListener();
-
- void setINetSettingsInVM(bool set_reset);
-
- void setUpUnoVirtualMachine(JNIEnv * environment);
-
- void handleJniException(JNIEnv * environment);
-
- com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
- m_xContext;
-
- // the following are controlled by the 'this' mutex:
- bool m_bDisposed;
- rtl::Reference< jvmaccess::VirtualMachine > m_xVirtualMachine;
- rtl::Reference< jvmaccess::UnoVirtualMachine > m_xUnoVirtualMachine;
- JavaVM * m_pJavaVm;
- // stored as an instance member for backwards compatibility in getJavaVM
- bool m_bDontCreateJvm;
- // If the first creation of Java failed and this flag is set then the
- // next call to getJavaVM throws a RuntimException. This is useful when
- // the second attempt to create Java might cause a crash.
- com::sun::star::uno::Reference< com::sun::star::container::XContainer >
- m_xInetConfiguration;
- com::sun::star::uno::Reference< com::sun::star::container::XContainer >
- m_xJavaConfiguration; // for Java settings
-
- osl::ThreadData m_aAttachGuards;
-};
-
-}
-
-#endif // INCLUDED_STOC_JAVAVM_JAVAVM_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/stoc/source/javavm/jen.xml b/stoc/source/javavm/jen.xml
deleted file mode 100644
index 42d8db92f..000000000
--- a/stoc/source/javavm/jen.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
-<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
- <module-name> javavm.uno </module-name>
- <component-description>
- <author> Kay Ramme </author>
- <name> com.sun.star.comp.stoc.JavaVirtualMachine </name>
- <description>
-The Java VM service manages the creation of java vms.
-It takes a look at the UNO runtime and tries to find a java environment.
-If an java environment already exists, no new vm is created, instead
-the existing vm given back.
-</description>
- <loader-name> com.sun.star.loader.SharedLibrary </loader-name>
- <language> c++ </language>
- <status value="final"/>
- <supported-service> com.sun.star.java.JavaVirtualMachine </supported-service>
- <service-dependency> ... </service-dependency>
- <type>com.sun.star.beans.NamedValue</type>
- <type>com.sun.star.java.XJavaThreadRegister_11</type>
- <type>com.sun.star.uri/ExternalUriReferenceTranslator</type>
- <type>com.sun.star.util.XMacroExpander</type>
- <type> com.sun.star.java.XJavaVM </type>
- <type> com.sun.star.java.XJavaVM </type>
- <type> com.sun.star.container.XNameAccess </type>
- <type> com.sun.star.container.XContainer </type>
- <type> com.sun.star.container.XContainerListener </type>
- <type> com.sun.star.lang.XTypeProvider </type>
- <type> com.sun.star.lang.XServiceInfo </type>
- <type> com.sun.star.lang.XSingleServiceFactory </type>
- <type> com.sun.star.lang.XMultiServiceFactory </type>
- <type> com.sun.star.lang.XComponent </type>
- <type> com.sun.star.lang.WrappedTargetRuntimeException </type>
- <type> com.sun.star.lang.DisposedException </type>
- <type> com.sun.star.lang.IllegalArgumentException </type>
- <type> com.sun.star.lang.XInitialization </type>
- <type> com.sun.star.registry.XSimpleRegistry </type>
- <type> com.sun.star.lang.XSingleComponentFactory </type>
- <type> com.sun.star.uno.XComponentContext </type>
- <type> com.sun.star.uno.XAggregation </type>
- <type> com.sun.star.uno.XWeak </type>
- <type> com.sun.star.uno.TypeClass </type>
- <type> com.sun.star.uno.XCurrentContext </type>
- <type> com.sun.star.beans.PropertyValue </type>
- <type> com.sun.star.task.XInteractionHandler </type>
- <type> com.sun.star.task.XInteractionRequest </type>
- <type> com.sun.star.task.XInteractionContinuation </type>
- <type> com.sun.star.task.XInteractionAbort </type>
- <type> com.sun.star.task.XInteractionRetry </type>
- <type> com.sun.star.java.JavaInitializationException </type>
- <type> com.sun.star.java.JavaDisabledException </type>
- <type> com.sun.star.java.JavaNotFoundException </type>
- <type> com.sun.star.java.InvalidJavaSettingsException </type>
- <type> com.sun.star.java.RestartRequiredException </type>
- <type> com.sun.star.java.JavaVMCreationFailureException </type>
- <type> com.sun.star.container.XNameAccess </type>
- </component-description>
- <project-build-dependency> cppuhelper </project-build-dependency>
- <project-build-dependency> cppu </project-build-dependency>
- <project-build-dependency> tools </project-build-dependency>
- <project-build-dependency> sal </project-build-dependency>
- <project-build-dependency> jvmaccess </project-build-dependency>
- <project-build-dependency> salhelper </project-build-dependency>
- <runtime-module-dependency> cppuhelper3$(COM) </runtime-module-dependency>
- <runtime-module-dependency> cppu3 </runtime-module-dependency>
- <runtime-module-dependency> tl(COM) </runtime-module-dependency>
- <runtime-module-dependency> sal3 </runtime-module-dependency>
- <runtime-module-dependency> jvmaccess3$(COM) </runtime-module-dependency>
- <runtime-module-dependency> salhelper3$(COM) </runtime-module-dependency>
-</module-description>
diff --git a/stoc/source/javavm/jvmargs.cxx b/stoc/source/javavm/jvmargs.cxx
deleted file mode 100644
index 323ffa829..000000000
--- a/stoc/source/javavm/jvmargs.cxx
+++ /dev/null
@@ -1,68 +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 "jvmargs.hxx"
-#include <rtl/ustring.hxx>
-
-
-#define OUSTR(x) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( x ))
-
-using ::rtl::OUString;
-namespace stoc_javavm {
-
-JVM::JVM() throw()//: _enabled(sal_False)
-{
-}
-
-void JVM::pushProp(const OUString & property)
-{
- sal_Int32 index = property.indexOf((sal_Unicode)'=');
- if(index > 0)
- {
- OUString left = property.copy(0, index).trim();
- OUString right(property.copy(index + 1).trim());
- _props.push_back(property);
- }
- else
- { // no '=', could be -X
- _props.push_back(property);
- }
-}
-
-
-const ::std::vector< ::rtl::OUString > & JVM::getProperties() const
-{
- return _props;
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/stoc/source/javavm/jvmargs.hxx b/stoc/source/javavm/jvmargs.hxx
deleted file mode 100644
index ebd1aa170..000000000
--- a/stoc/source/javavm/jvmargs.hxx
+++ /dev/null
@@ -1,61 +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 __JVM_HXX
-#define __JVM_HXX
-
-
-#include <vector>
-#include <rtl/ustring.hxx>
-
-#include "jni.h"
-
-
-extern "C" {
- typedef jint JNICALL JNI_InitArgs_Type(void *);
- typedef jint JNICALL JNI_CreateVM_Type(JavaVM **, JNIEnv **, void *);
-
-}
-
-namespace stoc_javavm {
-
- class JVM {
- ::std::vector<rtl::OUString> _props;
-
- public:
- JVM() throw();
-
- void pushProp(const ::rtl::OUString & uString);
- const ::std::vector< ::rtl::OUString> & getProperties() const;
- };
-}
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/stoc/source/javavm/makefile.mk b/stoc/source/javavm/makefile.mk
deleted file mode 100644
index bcd36e696..000000000
--- a/stoc/source/javavm/makefile.mk
+++ /dev/null
@@ -1,94 +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 = javavm.uno
-ENABLE_EXCEPTIONS=TRUE
-COMP1TYPELIST = jen
-
-.IF "$(SOLAR_JAVA)" == "TRUE"
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-DLLPRE =
-
-# --- Files --------------------------------------------------------
-
-# Kollision zwischen bool.h aus Java und bool.h aus der STL.
-# Das Problem tritt fuer alle Plattformen auf, aber anscheinend stolpert nur der
-# GCC darueber
-.IF "$(COM)" == "GCC"
-CDEFS += -D__SGI_STL_BOOL_H
-.ENDIF
-
-.INCLUDE : ..$/cppumaker.mk
-
-SLOFILES= \
- $(SLO)$/javavm.obj \
- $(SLO)$/jvmargs.obj \
- $(SLO)$/interact.obj
-
-SHL1TARGET= $(TARGET)
-SHL1VERSIONMAP = $(SOLARENV)/src/component.map
-SHL1STDLIBS= \
- $(CPPUHELPERLIB) \
- $(CPPULIB) \
- $(SALLIB) \
- $(JVMACCESSLIB) \
- $(SALHELPERLIB) \
- $(JVMFWKLIB)
-
-.IF "$(GUI)"=="WNT"
-SHL1STDLIBS += $(ADVAPI32LIB)
-.ENDIF
-
-SHL1DEPN=
-SHL1IMPLIB= i$(TARGET)
-SHL1LIBS= $(SLB)$/$(TARGET).lib
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-SHL1RPATH= URELIB
-
-DEF1NAME= $(SHL1TARGET)
-
-.ELSE # SOLAR_JAVA
-all:
- @echo Nothing to do: SOLAR_JAVA not set
-.ENDIF
-
-# --- Targets ------------------------------------------------------
-
-
-.INCLUDE : target.mk
-
-ALLTAR : $(MISC)/javavm.component
-
-$(MISC)/javavm.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
- javavm.component
- $(XSLTPROC) --nonet --stringparam uri \
- '$(COMPONENTPREFIX_URE_NATIVE)$(SHL1TARGETN:f)' -o $@ \
- $(SOLARENV)/bin/createcomponent.xslt javavm.component