As discussed in the mail thread starting at <http://mail-archives.apache.org/ mod_mbox/openoffice-dev/201806.mbox/%3c651c8fee-b467-421c-eae1-a8710f41692c @apache.org%3e> "Just a little side note on the scripting framework ...", external code that uses the Java class com.sun.star.script.framework.provider.ClassLoaderFactory stopped working because LO changed that class in binary (and compile-time) incompatible ways over time. The class is not listed at <https://api.libreoffice.org/docs/java/ref/index.html> (and neither at <http://www.openoffice.org/api/docs/java/ref/overview-summary.html>), so it was not considered part of the stable URE interface. But it is apparently used by external code, and it indeed seems to make sense that it is used by external code that implements scripting providers. (A follow-up commit should therefore mark the class as part of the stable URE interface. I keep that separate so that it is easier to backport this functional fix.) With ScriptProviderForooRexx.oxt from https://svn.code.sf.net/p/bsf4oorexx/code@r589 installed in LO, "Tools - Macros - Organize Macros - ooRexx... - My Macros - Create... - Library1 - OK - Create... - Macro1 - OK - Edit" failed due to > warn:cui.dialogs:21768:21768:cui/source/dialogs/scriptdlg.cxx:740: Caught exception trying to invoke N3com3sun4star3uno9ExceptionE msg: [jni_uno bridge error] UNO calling Java method invoke: non-UNO exception occurred: java.lang.NoSuchMethodError: com.sun.star.script.framework.provider.ClassLoaderFactory.getURLClassLoader(Lcom/sun/star/script/framework/container/ScriptMetaData;)Ljava/lang/ClassLoader; > java stack trace: > java.lang.NoSuchMethodError: com.sun.star.script.framework.provider.ClassLoaderFactory.getURLClassLoader(Lcom/sun/star/script/framework/container/ScriptMetaData;)Ljava/lang/ClassLoader; > at com.sun.star.script.framework.provider.oorexx.ScriptEditorForooRexx.edit(ScriptEditorForooRexx.java:305) > at com.sun.star.script.framework.browse.ScriptBrowseNode.invoke(ScriptBrowseNode.java:200)cae57d2e58
"ClassLoader->URLClassLoader" (which this commit reverts) had changed the return type of the two getURLClassLoader overloads from ClassLoader to derived URLClassLoader (and ultimately only for cosmetic effect; it was leftover from a previous attempt at fixing a Coverity issue by using URLClassLoader.close(), but which is only available in Java 1.7, so the attempt had been reverted). That caused the above failure. And68cd011c90
"java: reduce scope, make some methods private" (which this commit also reverts) had changed the second getURLClassLoader overload (which is not called in the above scenario) from public to private, which is also a binary-incompatible change. Other commits removed throws clauses, which is only a compile-time issue but not a binary-incompatible change. I left those changes in for now, but if need be they could also be reverted. Change-Id: I98f533d88c7c1580956c3c281e72a1c78fa3f56f Reviewed-on: https://gerrit.libreoffice.org/55871 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This module provides the source code for the Scripting Framework. For more information on the Scripting Framework, see the project web page: [http://framework.openoffice.org/scripting/] This module uses astyle to keep consistent java coding style. Please run ./Format_java_code.sh before committing. == Source Code Structure == The following directories contain the source code currently used by the Scripting Framework: - source/provider C++ source for the implementations of the com.sun.star.script.provider.* and com.sun.star.script.browse.* UNO types. These types are used for browsing and executing scripts. - source/protocolhandler C++ for a ProtocolHandler implementation that handles vnd.sun.star.script URIs and dispatches them for execution to the Scripting Framework. - source/basprov C++ implementation of the LanguageScriptProvider UNO service for Basic - source/dlgprov C++ implementation of the DialogProvider UNO service used for loading UNO dialogs from various languages - source/pyprov LanguageScriptProvider for Python - java/com/sun/star/script/framework/provider Implementation of an abstract base class ScriptProvider which provides core methods for implementing Java based LanguageScriptProvider implementations - java/com/sun/star/script/framework/provider/* BeanShell, JavaScript and Java LanguageScriptProvider implementations - java/com/sun/star/script/framework/browse/* BrowseNode implementations for the Java based LanguageScriptProviders - java/com/sun/star/script/framework/io - java/com/sun/star/script/framework/container Classes for performing script IO - examples Example scripts in BeanShell, JavaScript, Java and Python == Deprecated Code == - java/org/openoffice/* Support for developing scripts in IDEs such as NetBeans.