From: <or...@us...> - 2011-04-02 16:54:15
|
Revision: 1 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=1&view=rev Author: orexx Date: 2011-04-02 16:53:54 +0000 (Sat, 02 Apr 2011) Log Message: ----------- Adding files from release 405.20101208. Added Paths: ----------- trunk/ trunk/ApacheLicense2.0.txt trunk/ScriptProviderForooRexxManifest.mf trunk/asm_LICENSE.TXT trunk/bsf4oorexx.dev/ trunk/bsf4oorexx.dev/ReferenceCards/ trunk/bsf4oorexx.dev/ReferenceCards/BSF4ooRexx/ trunk/bsf4oorexx.dev/ReferenceCards/BSF4ooRexx/BSF4Rexx.ico trunk/bsf4oorexx.dev/ReferenceCards/BSF4ooRexx/BSF4Rexx_016px.png trunk/bsf4oorexx.dev/ReferenceCards/BSF4ooRexx/BSF4Rexx_032px.png trunk/bsf4oorexx.dev/ReferenceCards/BSF4ooRexx/BSF4Rexx_048px.png trunk/bsf4oorexx.dev/ReferenceCards/BSF4ooRexx/BSF4Rexx_064px.png trunk/bsf4oorexx.dev/ReferenceCards/BSF4ooRexx/BSF4Rexx_128px.png trunk/bsf4oorexx.dev/ReferenceCards/BSF4ooRexx/BSF4Rexx_256px.png trunk/bsf4oorexx.dev/ReferenceCards/BSF4ooRexx/refcardBSF4ooRexx.odt trunk/bsf4oorexx.dev/ReferenceCards/BSF4ooRexx/refcardBSF4ooRexx.pdf trunk/bsf4oorexx.dev/ReferenceCards/OOo/ trunk/bsf4oorexx.dev/ReferenceCards/OOo/ooRexx_OOo_016px.png trunk/bsf4oorexx.dev/ReferenceCards/OOo/ooRexx_OOo_032px.png trunk/bsf4oorexx.dev/ReferenceCards/OOo/ooRexx_OOo_048px.png trunk/bsf4oorexx.dev/ReferenceCards/OOo/ooRexx_OOo_064px.png trunk/bsf4oorexx.dev/ReferenceCards/OOo/ooRexx_OOo_128px.png trunk/bsf4oorexx.dev/ReferenceCards/OOo/ooRexx_OOo_256px.png trunk/bsf4oorexx.dev/ReferenceCards/OOo/oorexx4ooo.ico trunk/bsf4oorexx.dev/ReferenceCards/OOo/refcardOOo.odt trunk/bsf4oorexx.dev/ReferenceCards/OOo/refcardOOo.pdf trunk/bsf4oorexx.dev/ScriptProviderForooRexx.author.htm trunk/bsf4oorexx.dev/ScriptProviderForooRexx.release-notes_en.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexx.update.html trunk/bsf4oorexx.dev/ScriptProviderForooRexx.update.xml trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/ trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/META-INF/ trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/META-INF/manifest.xml trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/images/ trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/images/oorexx4ooo-logo.png trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/ trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/changesOOo.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/description_de.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/description_en.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/description_es.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/description_fr.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/description_hi.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/description_jp.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/description_nl.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/description_ru.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/publisher_en.html trunk/bsf4oorexx.dev/Templates/ trunk/bsf4oorexx.dev/Templates/RexxJavaScript (Rexx script using Java) executed by ooRexx.rxj trunk/bsf4oorexx.dev/Templates/RexxOOoScript (Rexx script using OpenOffice.org) executed by ooRexx.rxo trunk/bsf4oorexx.dev/Templates/RexxScript (Rexx script) executed by ooRexx.rex trunk/bsf4oorexx.dev/ToDo.txt trunk/bsf4oorexx.dev/bin/ trunk/bsf4oorexx.dev/bin/BSF.CLS trunk/bsf4oorexx.dev/bin/BSF_OnTheFly.cls trunk/bsf4oorexx.dev/bin/UNO.CLS trunk/bsf4oorexx.dev/bin/UNO_API_info.rxo trunk/bsf4oorexx.dev/bin/UNO_CREATE_INTERFACE_LIST.RXO trunk/bsf4oorexx.dev/bin/UNO_ReflectionUtil.cls trunk/bsf4oorexx.dev/bin/UNO_XINTERFACES.RXO trunk/bsf4oorexx.dev/bin/addJars2cp.cmd trunk/bsf4oorexx.dev/bin/addLinks2OOoSnippets.rxo trunk/bsf4oorexx.dev/bin/j1aha.html trunk/bsf4oorexx.dev/bin/j2aha.html trunk/bsf4oorexx.dev/bin/j3aha.html trunk/bsf4oorexx.dev/bin/j4aha.html trunk/bsf4oorexx.dev/bin/j5aha.html trunk/bsf4oorexx.dev/bin/j6aha.html trunk/bsf4oorexx.dev/bin/rexxj2.cmd trunk/bsf4oorexx.dev/bin/rexxj2.sh trunk/bsf4oorexx.dev/bin/rgf_util2.rex trunk/bsf4oorexx.dev/bin/set-OOo-3.cmd trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt trunk/bsf4oorexx.dev/changesOOo.txt trunk/bsf4oorexx.dev/cmpj.cmd trunk/bsf4oorexx.dev/credits.txt trunk/bsf4oorexx.dev/images/ trunk/bsf4oorexx.dev/images/linux/ trunk/bsf4oorexx.dev/images/linux/Crystal/ trunk/bsf4oorexx.dev/images/linux/Crystal/oorexx_016.png trunk/bsf4oorexx.dev/images/linux/Crystal/oorexx_022.png trunk/bsf4oorexx.dev/images/linux/Crystal/oorexx_024.png trunk/bsf4oorexx.dev/images/linux/Crystal/oorexx_032.png trunk/bsf4oorexx.dev/images/linux/Crystal/oorexx_048.png trunk/bsf4oorexx.dev/images/linux/Crystal/oorexx_064.png trunk/bsf4oorexx.dev/images/linux/Crystal/oorexx_128.png trunk/bsf4oorexx.dev/images/linux/Crystal/oorexx_256.png trunk/bsf4oorexx.dev/images/linux/Tango/ trunk/bsf4oorexx.dev/images/linux/Tango/oorexx_016.png trunk/bsf4oorexx.dev/images/linux/Tango/oorexx_024.png trunk/bsf4oorexx.dev/images/linux/Tango/oorexx_032.png trunk/bsf4oorexx.dev/images/linux/Tango/oorexx_048.png trunk/bsf4oorexx.dev/images/linux/Tango/oorexx_064.png trunk/bsf4oorexx.dev/images/linux/Tango/oorexx_128.png trunk/bsf4oorexx.dev/images/linux/Tango/oorexx_256.png trunk/bsf4oorexx.dev/images/linux/gnome/ trunk/bsf4oorexx.dev/images/linux/gnome/oorexx_016.png trunk/bsf4oorexx.dev/images/linux/gnome/oorexx_022.png trunk/bsf4oorexx.dev/images/linux/gnome/oorexx_024.png trunk/bsf4oorexx.dev/images/linux/gnome/oorexx_032.png trunk/bsf4oorexx.dev/images/linux/gnome/oorexx_048.png trunk/bsf4oorexx.dev/images/linux/gnome/oorexx_064.png trunk/bsf4oorexx.dev/images/linux/gnome/oorexx_128.png trunk/bsf4oorexx.dev/images/linux/gnome/oorexx_256.png trunk/bsf4oorexx.dev/images/linux/hicolor/ trunk/bsf4oorexx.dev/images/linux/hicolor/bsf4oorexx-logo_128.png trunk/bsf4oorexx.dev/images/linux/hicolor/bsf4oorexx_016.png trunk/bsf4oorexx.dev/images/linux/hicolor/bsf4oorexx_032.png trunk/bsf4oorexx.dev/images/linux/hicolor/bsf4oorexx_048.png trunk/bsf4oorexx.dev/images/linux/hicolor/bsf4oorexx_064.png trunk/bsf4oorexx.dev/images/linux/hicolor/bsf4oorexx_128.png trunk/bsf4oorexx.dev/images/linux/hicolor/bsf4oorexx_256.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx-logo_128.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx4ooo-logo_128.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx4ooo_016.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx4ooo_032.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx4ooo_048.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx4ooo_064.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx4ooo_128.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx4ooo_256.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx_016.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx_032.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx_048.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx_064.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx_128.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx_256.png trunk/bsf4oorexx.dev/images/linux/nuvola/ trunk/bsf4oorexx.dev/images/linux/nuvola/oorexx_016.png trunk/bsf4oorexx.dev/images/linux/nuvola/oorexx_022.png trunk/bsf4oorexx.dev/images/linux/nuvola/oorexx_032.png trunk/bsf4oorexx.dev/images/linux/nuvola/oorexx_048.png trunk/bsf4oorexx.dev/images/linux/nuvola/oorexx_064.png trunk/bsf4oorexx.dev/images/linux/nuvola/oorexx_128.png trunk/bsf4oorexx.dev/images/linux/oxygen/ trunk/bsf4oorexx.dev/images/linux/oxygen/oorexx_016.png trunk/bsf4oorexx.dev/images/linux/oxygen/oorexx_022.png trunk/bsf4oorexx.dev/images/linux/oxygen/oorexx_032.png trunk/bsf4oorexx.dev/images/linux/oxygen/oorexx_048.png trunk/bsf4oorexx.dev/images/linux/oxygen/oorexx_064.png trunk/bsf4oorexx.dev/images/linux/oxygen/oorexx_128.png trunk/bsf4oorexx.dev/images/linux/oxygen/oorexx_256.png trunk/bsf4oorexx.dev/images/windows/ trunk/bsf4oorexx.dev/images/windows/bsf4oorexx-logo.ico trunk/bsf4oorexx.dev/images/windows/bsf4oorexx.ico trunk/bsf4oorexx.dev/images/windows/oorexx.ico trunk/bsf4oorexx.dev/images/windows/oorexx4ooo.ico trunk/bsf4oorexx.dev/images/windows/windows6/ trunk/bsf4oorexx.dev/images/windows/windows6/oorexx.ico trunk/bsf4oorexx.dev/information/ trunk/bsf4oorexx.dev/information/2009_orx20_BSF4ooRexx-20091031-article.pdf trunk/bsf4oorexx.dev/information/2009_orx20_RGF_UTIL2-20100120-refcard.pdf trunk/bsf4oorexx.dev/information/2009_orx20_RGF_UTIL2-20100806-article.pdf trunk/bsf4oorexx.dev/information/ECOOP2006_RDL_Workshop_Flatscher_Paper.pdf trunk/bsf4oorexx.dev/information/ReleaseNotes.txt trunk/bsf4oorexx.dev/information/readme.txt trunk/bsf4oorexx.dev/install/ trunk/bsf4oorexx.dev/install/BSF4Rexx_info2html.rxj trunk/bsf4oorexx.dev/install/JavaInfo4BSF4RexxInstallation.class trunk/bsf4oorexx.dev/install/JavaInfo4BSF4RexxInstallation.java trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/ trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/javascript/ trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/javascript/HowtoCreateApiInfo/ trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/javascript/HowtoCreateApiInfo/HowtoCreateApiInfo.js trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/javascript/HowtoCreateApiInfo/parcel-descriptor.xml trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/oorexx/ trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/oorexx/ooRexx_examples/ trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/oorexx/ooRexx_examples/ExportSheetsToHTML.rxo trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/oorexx/ooRexx_examples/HelloWorld.rxo trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/oorexx/ooRexx_examples/HowtoCreateApiInfo.rxo trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/oorexx/ooRexx_examples/MemoryUsage.rxo trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/oorexx/ooRexx_examples/TableSample.rxo trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/oorexx/ooRexx_examples/WordCount.rxo trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/oorexx/ooRexx_examples/parcel-descriptor.xml trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/python/ trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/python/pythonSamples/ trunk/bsf4oorexx.dev/install/OOo_ScriptLibraries/python/pythonSamples/HowtoCreateApiInfo.py trunk/bsf4oorexx.dev/install/add_ooRexxPackage.rxo trunk/bsf4oorexx.dev/install/elevate.rex trunk/bsf4oorexx.dev/install/experimental/ trunk/bsf4oorexx.dev/install/experimental/add_ooRexxPackage_TNG.rex trunk/bsf4oorexx.dev/install/infoBSF-oo.rxj trunk/bsf4oorexx.dev/install/infoBSF.rxj trunk/bsf4oorexx.dev/install/installOOoRexxMacros.rxo trunk/bsf4oorexx.dev/install/linux/ trunk/bsf4oorexx.dev/install/linux/install.sh trunk/bsf4oorexx.dev/install/linux/reinstall.sh trunk/bsf4oorexx.dev/install/linux/resources/ trunk/bsf4oorexx.dev/install/linux/resources/bsf4oorexx.desktop trunk/bsf4oorexx.dev/install/linux/resources/bsf4oorexx.xml trunk/bsf4oorexx.dev/install/linux/resources/menu/ trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_home.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_information.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_menu.directory trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_menu.menu trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_reinstall.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_samples.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_setupjava.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_uninstall.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_utilities.desktop trunk/bsf4oorexx.dev/install/linux/resources/oorexx.desktop trunk/bsf4oorexx.dev/install/linux/resources/oorexx.xml trunk/bsf4oorexx.dev/install/linux/resources/oorexx4ooo.desktop trunk/bsf4oorexx.dev/install/linux/resources/oorexx4ooo.xml trunk/bsf4oorexx.dev/install/linux/resources/oorexxpause.desktop trunk/bsf4oorexx.dev/install/linux/uninstall.sh trunk/bsf4oorexx.dev/install/msgBox.rxj trunk/bsf4oorexx.dev/install/orx2reg.rex trunk/bsf4oorexx.dev/install/rexxpaws.rex trunk/bsf4oorexx.dev/install/runRexxScriptJava.sh trunk/bsf4oorexx.dev/install/runRexxScriptOOo.sh trunk/bsf4oorexx.dev/install/setupAllAndRun.rex trunk/bsf4oorexx.dev/install/setupBSF.rex trunk/bsf4oorexx.dev/install/setupFileAssociations.rex trunk/bsf4oorexx.dev/install/setupJava.rex trunk/bsf4oorexx.dev/install/setupOOo.rex trunk/bsf4oorexx.dev/install/terminateOOo.rxo trunk/bsf4oorexx.dev/install/testOOo.rxo trunk/bsf4oorexx.dev/install/testOOo2.rxo trunk/bsf4oorexx.dev/install/windows/ trunk/bsf4oorexx.dev/install/windows/install.cmd trunk/bsf4oorexx.dev/install/windows/kickoff.rex trunk/bsf4oorexx.dev/install/windows/reinstall.cmd trunk/bsf4oorexx.dev/install/windows/uninstall.cmd trunk/bsf4oorexx.dev/readme-Linux.txt trunk/bsf4oorexx.dev/readme-Windows.txt trunk/bsf4oorexx.dev/readmeBSF4ooRexx.txt trunk/bsf4oorexx.dev/readmeBSF4ooRexx_next.txt trunk/bsf4oorexx.dev/readmeOOo.txt trunk/bsf4oorexx.dev/readmeOOo_next.txt trunk/bsf4oorexx.dev/rexxj.cmd trunk/bsf4oorexx.dev/rexxj.sh trunk/bsf4oorexx.dev/rgf_find_aha.txt trunk/bsf4oorexx.dev/source_cc/ trunk/bsf4oorexx.dev/source_cc/32/ trunk/bsf4oorexx.dev/source_cc/32/api/ trunk/bsf4oorexx.dev/source_cc/32/api/oorexxapi.h trunk/bsf4oorexx.dev/source_cc/32/api/oorexxerrors.h trunk/bsf4oorexx.dev/source_cc/32/api/rexx.h trunk/bsf4oorexx.dev/source_cc/32/api/rexx.lib trunk/bsf4oorexx.dev/source_cc/32/api/rexxapi.lib trunk/bsf4oorexx.dev/source_cc/32/api/rexxapidefs.h trunk/bsf4oorexx.dev/source_cc/32/api/rexxapitypes.h trunk/bsf4oorexx.dev/source_cc/32/api/rexxplatformapis.h trunk/bsf4oorexx.dev/source_cc/32/api/rexxplatformdefs.h trunk/bsf4oorexx.dev/source_cc/64/ trunk/bsf4oorexx.dev/source_cc/64/api/ trunk/bsf4oorexx.dev/source_cc/64/api/oorexxapi.h trunk/bsf4oorexx.dev/source_cc/64/api/oorexxerrors.h trunk/bsf4oorexx.dev/source_cc/64/api/rexx.h trunk/bsf4oorexx.dev/source_cc/64/api/rexx.lib trunk/bsf4oorexx.dev/source_cc/64/api/rexxapi.lib trunk/bsf4oorexx.dev/source_cc/64/api/rexxapidefs.h trunk/bsf4oorexx.dev/source_cc/64/api/rexxapitypes.h trunk/bsf4oorexx.dev/source_cc/64/api/rexxplatformapis.h trunk/bsf4oorexx.dev/source_cc/64/api/rexxplatformdefs.h trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx-32.def trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx-64.def trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc trunk/bsf4oorexx.dev/source_cc/Makefile32 trunk/bsf4oorexx.dev/source_cc/Makefile64 trunk/bsf4oorexx.dev/source_cc/asm_LICENSE.TXT trunk/bsf4oorexx.dev/source_cc/associationChanged.c trunk/bsf4oorexx.dev/source_cc/env4_32bit_xp.cmd trunk/bsf4oorexx.dev/source_cc/env4_64bit_xp.cmd trunk/bsf4oorexx.dev/source_cc/lin_bsf4rexx-32.mak trunk/bsf4oorexx.dev/source_cc/lin_bsf4rexx-64.mak trunk/bsf4oorexx.dev/source_cc/org_rexxla_bsf_engines_rexx_RexxAndJava.h trunk/bsf4oorexx.dev/source_java/ trunk/bsf4oorexx.dev/source_java/ArrayWrapper.class trunk/bsf4oorexx.dev/source_java/ArrayWrapper.java trunk/bsf4oorexx.dev/source_java/EnumerationWrapper.class trunk/bsf4oorexx.dev/source_java/EnumerationWrapper.java trunk/bsf4oorexx.dev/source_java/Java4Rexx.class trunk/bsf4oorexx.dev/source_java/Java4Rexx.java trunk/bsf4oorexx.dev/source_java/MethodForSuperData.class trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool$RunInfos.class trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool.class trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool.java trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.java trunk/bsf4oorexx.dev/source_java/RexxDispatcher.class trunk/bsf4oorexx.dev/source_java/RexxDispatcher.java trunk/bsf4oorexx.dev/source_java/RexxEngine.class trunk/bsf4oorexx.dev/source_java/RexxEngine.java trunk/bsf4oorexx.dev/source_java/RexxException.class trunk/bsf4oorexx.dev/source_java/RexxException.java trunk/bsf4oorexx.dev/source_java/RexxExtendClass.class trunk/bsf4oorexx.dev/source_java/RexxExtendClass.java trunk/bsf4oorexx.dev/source_java/RexxExtendingClassLoader.class trunk/bsf4oorexx.dev/source_java/RexxExtendingClassLoader.java trunk/bsf4oorexx.dev/source_java/RexxProxy.class trunk/bsf4oorexx.dev/source_java/RexxProxy.java trunk/bsf4oorexx.dev/source_java/Supplier.class trunk/bsf4oorexx.dev/source_java/Supplier.java trunk/bsf4oorexx.dev/source_java/Test.class trunk/bsf4oorexx.dev/source_java/Test.java trunk/bsf4oorexx.dev/source_java/TransformationData.class trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava.h trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava_ExitDelayed.h trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava_SyncPutGet.h trunk/bsf4oorexx.dev/testUnits/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/Array.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/Bean.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/FieldValue.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/eventText.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/getConstant.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/getStaticValue.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/invoke.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/objects/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/objects/Boolean.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/objects/Integer.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/objects/String.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/setRexxNullString.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/sleep.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/version.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/Array.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/BSFVersion.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/Bean.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/BsfInvokedBy.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/EventListener.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/FieldValue.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/bsfPrefixReturnValue.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/eventText.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/functions.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/getBSFManager.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/getStaticValue.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/invoke.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/setRexxNullString.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/sleep.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/version.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/A_BsfRexxProxy/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/A_BsfRexxProxy/01_rexx_testBsfProxyObject.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/B_callback/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/B_callback/01_rexx_testCallback.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/C_interfaceClasses/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/C_interfaceClasses/01_rexx_testInterface.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/C_interfaceClasses/02_rexx_testInterfaceCallback.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/C_interfaceClasses/ITest.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/C_interfaceClasses/ITest.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/C_interfaceClasses/Test_ITest.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/C_interfaceClasses/Test_ITest.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/C_interfaceClasses/compileJava.cmd trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/C_interfaceClasses/readme.txt trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/01_rexx_testAbstract.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/02_rexx_testAbstractCallback.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/03_rexx_testAbstractCallback.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/AbstractTest.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/AbstractTest.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/AbstractTest_03.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/AbstractTest_03.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/Test_AbstractTest.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/Test_AbstractTest.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/compileJava.cmd trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/D_abstractClasses/readme.txt trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/01_rexx_testExtendNormal.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/02_rexx_testExtendNormalCallback.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/03_rexx_testExtendNormalCallback.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/NormalTest.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/NormalTest.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/NormalTest_03.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/NormalTest_03.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/Test_NormalTest.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/Test_NormalTest.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/compileJava.cmd trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/E_extendNormalClasses/readme.txt trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/01_test_MultiThreading_Rexx.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/80_test_MultiThreading_via_Java_threads.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/80_test_Multithreading_via_Java_threads.rex trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/81_test_MultiThreading_via_Java_threads.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/90_test_MultiThreading_via_Java_threads.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/90_test_Multithreading_via_Java_threads.rex trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/TestNestedEngines$1.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/TestNestedEngines$ThreadedJNIRexxStart.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/TestNestedEngines.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/TestNestedEngines.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/TestNestedEngines_80$1.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/TestNestedEngines_80$ThreadedJNIRexxStart.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/TestNestedEngines_80$ThreadedJNIRexxStart80.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/TestNestedEngines_80.class trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/TestNestedEngines_80.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/compileJava.cmd trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/F_multiThreading/readme.txt trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/G_misc/ trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/G_misc/01_rexx_testBsfRawBytes.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/G_misc/02_rexx_test_bsf_isA.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/readme.txt trunk/bsf4oorexx.dev/testUnits/ooRexxUnit/ trunk/bsf4oorexx.dev/testUnits/ooRexxUnit/FileUtils.cls trunk/bsf4oorexx.dev/testUnits/ooRexxUnit/OOREXXUNIT.CLS trunk/bsf4oorexx.dev/testUnits/ooRexxUnit/ReadMe.first trunk/bsf4oorexx.dev/testUnits/ooRexxUnit/WinUtils.cls trunk/bsf4oorexx.dev/testUnits/ooRexxUnit/building.frm trunk/bsf4oorexx.dev/testUnits/ooRexxUnit/ooTest.frm trunk/bsf4oorexx.dev/testUnits/ooRexxUnit/testOORexx.rex trunk/bsf4oorexx.dev/testUnits/ooRexxUnit/worker.rex trunk/bsf4oorexx.dev/testUnits/readmeBSF4ooRexx.txt trunk/bsf4oorexx.dev/testUnits/run_BSF4Rexx_Tests.cmd trunk/bsf4oorexx.dev/testUnits/run_BSF4Rexx_Tests.sh trunk/bsf4oorexx.dev/testUnits/run_BSF4ooRexx_Tests.cmd trunk/bsf4oorexx.dev/testUnits/run_BSF4ooRexx_Tests.sh trunk/bsf4oorexx.dev/testUnits/run_allTests.cmd trunk/bsf4oorexx.dev/testUnits/run_allTests.sh trunk/bsf4oorexx.dev/testUnits/setEnv4bsf4rexx.cmd trunk/bsf4oorexx.dev/testUnits/setEnv4bsf4rexx.sh trunk/bsf4oorexx.dev/utilities/ trunk/bsf4oorexx.dev/utilities/OOo/ trunk/bsf4oorexx.dev/utilities/OOo/OOoScreenShot.rxo trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/ trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/HowtoCreateApiInfo.bas trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/HowtoCreateApiInfo.class trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/HowtoCreateApiInfo.java trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/HowtoCreateApiInfo.js trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/HowtoCreateApiInfo.py trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/HowtoCreateApiInfo.rxo trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/HowtoCreateApiInfo_direct.rxo trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/HowtoCreateApiInfo_supplying_uno_object.rxo trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/frontend_UNO_API_info.rxo trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/picture_frontend_UNO_API_info.png trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/read-me-UNO_API_info.html trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/run_frontend_UNO_API_info.cmd trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/run_frontend_UNO_API_info.sh trunk/bsf4oorexx.dev/utilities/OOo/addLinks2OOoSnippets.rxo trunk/bsf4oorexx.dev/utilities/bsfScreenShot.cls trunk/bsf4oorexx.dev/utilities/useBsfScreenshot_01.rxj trunk/bsf4oorexx.dev/utilities/useBsfScreenshot_02.rxj trunk/com/ trunk/com/sun/ trunk/com/sun/star/ trunk/com/sun/star/script/ trunk/com/sun/star/script/framework/ trunk/com/sun/star/script/framework/provider/ trunk/com/sun/star/script/framework/provider/oorexx/ trunk/com/sun/star/script/framework/provider/oorexx/GlyphGutter.class trunk/com/sun/star/script/framework/provider/oorexx/PlainSourceView.class trunk/com/sun/star/script/framework/provider/oorexx/PlainSourceView.java trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx$1.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx.java trunk/com/sun/star/script/framework/provider/oorexx/ScriptImpl.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$_ScriptProviderForooRexx.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceModel.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceModel.java trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceView.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceView.java trunk/com/sun/star/script/framework/provider/oorexx/template.rxo trunk/compile_all.cmd trunk/createDistributionForBSF4ooRexx4.cmd trunk/createScriptProviderForooRexx.cmd trunk/goscript.cmd trunk/janino_LICENSE.TXT trunk/jars/ trunk/jars/Xalan/ trunk/jars/Xalan/ApacheLicense2.0.txt trunk/jars/Xalan/junit.jar trunk/jars/Xalan/readme-rgf.txt trunk/jars/Xalan/xalan.jar trunk/jars/Xalan/xercesImpl.jar trunk/jars/asm/ trunk/jars/asm/asm-3.2.jar trunk/jars/asm/asm-3.2.tar.gz trunk/jars/asm/asm-3.3.1.jar trunk/jars/asm/asm-3.3.1.tar.gz trunk/jars/asm/asm-3.3.tar.gz trunk/jars/asm/asm-all-3.2.jar trunk/jars/asm/asm-analysis-3.2.jar trunk/jars/asm/asm-commons-3.2.jar trunk/jars/asm/asm-debug-all-3.2.jar trunk/jars/asm/asm-tree-3.2.jar trunk/jars/asm/asm-util-3.2.jar trunk/jars/asm/asm-xml-3.2.jar trunk/jars/asm/asm_LICENSE.TXT trunk/jars/asm/readme-rgf.txt trunk/jars/asm/set2asm320.cmd trunk/jars/janino/ trunk/jars/janino/README.txt trunk/jars/janino/commons-compiler-jdk.jar trunk/jars/janino/commons-compiler.jar trunk/jars/janino/janino.jar trunk/jars/janino/janino_LICENSE.TXT trunk/jars/janino/new_bsd_license.txt trunk/jars/janino/readme-rgf.txt trunk/jars/janino/set2janino.cmd trunk/make-docs-apache.cmd trunk/org/ trunk/org/apache/ trunk/org/apache/bsf/ trunk/org/apache/bsf/BSFDeclaredBean.class trunk/org/apache/bsf/BSFDeclaredBean.java trunk/org/apache/bsf/BSFEngine.class trunk/org/apache/bsf/BSFEngine.java trunk/org/apache/bsf/BSFException.class trunk/org/apache/bsf/BSFException.java trunk/org/apache/bsf/BSFManager$1.class trunk/org/apache/bsf/BSFManager$2.class trunk/org/apache/bsf/BSFManager$3.class trunk/org/apache/bsf/BSFManager$4.class trunk/org/apache/bsf/BSFManager$5.class trunk/org/apache/bsf/BSFManager$6.class trunk/org/apache/bsf/BSFManager$7.class trunk/org/apache/bsf/BSFManager$8.class trunk/org/apache/bsf/BSFManager.class trunk/org/apache/bsf/BSFManager.java trunk/org/apache/bsf/BSF_Log.class trunk/org/apache/bsf/BSF_Log.java trunk/org/apache/bsf/BSF_LogFactory.class trunk/org/apache/bsf/BSF_LogFactory.java trunk/org/apache/bsf/Languages.properties trunk/org/apache/bsf/Main$1.class trunk/org/apache/bsf/Main.class trunk/org/apache/bsf/Main.java trunk/org/apache/bsf/RGFInfo.class trunk/org/apache/bsf/RGFInfo.java trunk/org/apache/bsf/engines/ trunk/org/apache/bsf/engines/jacl/ trunk/org/apache/bsf/engines/jacl/BSFCommand.class trunk/org/apache/bsf/engines/jacl/BSFCommand.java trunk/org/apache/bsf/engines/jacl/JaclEngine.class trunk/org/apache/bsf/engines/jacl/JaclEngine.java trunk/org/apache/bsf/engines/java/ trunk/org/apache/bsf/engines/java/JavaEngine$1.class trunk/org/apache/bsf/engines/java/JavaEngine$GeneratedFile.class trunk/org/apache/bsf/engines/java/JavaEngine.class trunk/org/apache/bsf/engines/java/JavaEngine.java trunk/org/apache/bsf/engines/javaclass/ trunk/org/apache/bsf/engines/javaclass/JavaClassEngine.class trunk/org/apache/bsf/engines/javaclass/JavaClassEngine.java trunk/org/apache/bsf/engines/javascript/ trunk/org/apache/bsf/engines/javascript/JavaScriptEngine.class trunk/org/apache/bsf/engines/javascript/JavaScriptEngine.java trunk/org/apache/bsf/engines/jython/ trunk/org/apache/bsf/engines/jython/JythonEngine$BSFPythonInterpreter.class trunk/org/apache/bsf/engines/jython/JythonEngine.class trunk/org/apache/bsf/engines/jython/JythonEngine.java trunk/org/apache/bsf/engines/netrexx/ trunk/org/apache/bsf/engines/netrexx/NetRexxEngine$1.class trunk/org/apache/bsf/engines/netrexx/NetRexxEngine$GeneratedFile.class trunk/org/apache/bsf/engines/netrexx/NetRexxEngine.class trunk/org/apache/bsf/engines/netrexx/NetRexxEngine.java trunk/org/apache/bsf/engines/xslt/ trunk/org/apache/bsf/engines/xslt/XSLTEngine.class trunk/org/apache/bsf/engines/xslt/XSLTEngine.java trunk/org/apache/bsf/engines/xslt/XSLTResultNode.class trunk/org/apache/bsf/engines/xslt/XSLTResultNode.java trunk/org/apache/bsf/test/ trunk/org/apache/bsf/test/BSFEngineTestTmpl.class trunk/org/apache/bsf/test/BSFEngineTestTmpl.java trunk/org/apache/bsf/test/BSFTest.class trunk/org/apache/bsf/test/BSFTest.java trunk/org/apache/bsf/test/engineTests/ trunk/org/apache/bsf/test/engineTests/jaclTest.class trunk/org/apache/bsf/test/engineTests/jaclTest.java trunk/org/apache/bsf/test/engineTests/javascriptTest.class trunk/org/apache/bsf/test/engineTests/javascriptTest.java trunk/org/apache/bsf/test/engineTests/jythonTest.class trunk/org/apache/bsf/test/engineTests/jythonTest.java trunk/org/apache/bsf/test/engineTests/netrexxTest.class trunk/org/apache/bsf/test/engineTests/netrexxTest.java trunk/org/apache/bsf/test/fakeEngine.class trunk/org/apache/bsf/test/fakeEngine.java trunk/org/apache/bsf/test/utilTests/ trunk/org/apache/bsf/test/utilTests/EngineUtilsTest.class trunk/org/apache/bsf/test/utilTests/EngineUtilsTest.java trunk/org/apache/bsf/test/utilTests/IOUtilsTest.class trunk/org/apache/bsf/test/utilTests/IOUtilsTest.java trunk/org/apache/bsf/test/utilTests/StringUtilsTest.class trunk/org/apache/bsf/test/utilTests/StringUtilsTest.java trunk/org/apache/bsf/test/utilTests/TestBean.class trunk/org/apache/bsf/test/utilTests/TestBean.java trunk/org/apache/bsf/util/ trunk/org/apache/bsf/util/BSFClassLoader.class trunk/org/apache/bsf/util/BSFClassLoader.java trunk/org/apache/bsf/util/BSFEngineImpl.class trunk/org/apache/bsf/util/BSFEngineImpl.java trunk/org/apache/bsf/util/BSFEventProcessor.class trunk/org/apache/bsf/util/BSFEventProcessor.java trunk/org/apache/bsf/util/BSFEventProcessorReturningEventInfos.class trunk/org/apache/bsf/util/BSFEventProcessorReturningEventInfos.java trunk/org/apache/bsf/util/BSFFunctions.class trunk/org/apache/bsf/util/BSFFunctions.java trunk/org/apache/bsf/util/Bean.class trunk/org/apache/bsf/util/Bean.java trunk/org/apache/bsf/util/CodeBuffer.class trunk/org/apache/bsf/util/CodeBuffer.java trunk/org/apache/bsf/util/DebugLog$1.class trunk/org/apache/bsf/util/DebugLog.class trunk/org/apache/bsf/util/DebugLog.java trunk/org/apache/bsf/util/EngineUtils$1.class trunk/org/apache/bsf/util/EngineUtils.class trunk/org/apache/bsf/util/EngineUtils.java trunk/org/apache/bsf/util/IOUtils.class trunk/org/apache/bsf/util/IOUtils.java trunk/org/apache/bsf/util/IndentWriter.class trunk/org/apache/bsf/util/IndentWriter.java trunk/org/apache/bsf/util/JavaUtils.class trunk/org/apache/bsf/util/JavaUtils.java trunk/org/apache/bsf/util/MethodUtils$1.class trunk/org/apache/bsf/util/MethodUtils$MoreSpecific.class trunk/org/apache/bsf/util/MethodUtils.class trunk/org/apache/bsf/util/MethodUtils.java trunk/org/apache/bsf/util/ObjInfo.class trunk/org/apache/bsf/util/ObjInfo.java trunk/org/apache/bsf/util/ObjectRegistry.class trunk/org/apache/bsf/util/ObjectRegistry.java trunk/org/apache/bsf/util/ReflectionUtils$1.class trunk/org/apache/bsf/util/ReflectionUtils$2.class trunk/org/apache/bsf/util/ReflectionUtils$3.class trunk/org/apache/bsf/util/ReflectionUtils.class trunk/org/apache/bsf/util/ReflectionUtils.java trunk/org/apache/bsf/util/ScriptSymbolTable.class trunk/org/apache/bsf/util/ScriptSymbolTable.java trunk/org/apache/bsf/util/StringUtils.class trunk/org/apache/bsf/util/StringUtils.java trunk/org/apache/bsf/util/cf/ trunk/org/apache/bsf/util/cf/CFDriver.class trunk/org/apache/bsf/util/cf/CFDriver.java trunk/org/apache/bsf/util/cf/CodeFormatter.class trunk/org/apache/bsf/util/cf/CodeFormatter.java trunk/org/apache/bsf/util/event/ trunk/org/apache/bsf/util/event/EventAdapter.class trunk/org/apache/bsf/util/event/EventAdapter.java trunk/org/apache/bsf/util/event/EventAdapterImpl.class trunk/org/apache/bsf/util/event/EventAdapterImpl.java trunk/org/apache/bsf/util/event/EventAdapterRegistry$1.class trunk/org/apache/bsf/util/event/EventAdapterRegistry.class trunk/org/apache/bsf/util/event/EventAdapterRegistry.java trunk/org/apache/bsf/util/event/EventProcessor.class trunk/org/apache/bsf/util/event/EventProcessor.java trunk/org/apache/bsf/util/event/adapters/ trunk/org/apache/bsf/util/event/adapters/java_awt_event_ActionAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_ActionAdapter.java trunk/org/apache/bsf/util/event/adapters/java_awt_event_AdjustmentAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_AdjustmentAdapter.java trunk/org/apache/bsf/util/event/adapters/java_awt_event_ComponentAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_ComponentAdapter.java trunk/org/apache/bsf/util/event/adapters/java_awt_event_ContainerAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_ContainerAdapter.java trunk/org/apache/bsf/util/event/adapters/java_awt_event_FocusAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_FocusAdapter.java trunk/org/apache/bsf/util/event/adapters/java_awt_event_ItemAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_ItemAdapter.java trunk/org/apache/bsf/util/event/adapters/java_awt_event_KeyAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_KeyAdapter.java trunk/org/apache/bsf/util/event/adapters/java_awt_event_MouseAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_MouseAdapter.java trunk/org/apache/bsf/util/event/adapters/java_awt_event_MouseMotionAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_MouseMotionAdapter.java trunk/org/apache/bsf/util/event/adapters/java_awt_event_TextAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_TextAdapter.java trunk/org/apache/bsf/util/event/adapters/java_awt_event_WindowAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_WindowAdapter.java trunk/org/apache/bsf/util/event/adapters/java_beans_PropertyChangeAdapter.class trunk/org/apache/bsf/util/event/adapters/java_beans_PropertyChangeAdapter.java trunk/org/apache/bsf/util/event/adapters/java_beans_VetoableChangeAdapter.class trunk/org/apache/bsf/util/event/adapters/java_beans_VetoableChangeAdapter.java trunk/org/apache/bsf/util/event/generator/ trunk/org/apache/bsf/util/event/generator/AdapterClassLoader$1.class trunk/org/apache/bsf/util/event/generator/AdapterClassLoader$LocalThreadClassLoader.class trunk/org/apache/bsf/util/event/generator/AdapterClassLoader.class trunk/org/apache/bsf/util/event/generator/AdapterClassLoader.java trunk/org/apache/bsf/util/event/generator/ByteUtility.class trunk/org/apache/bsf/util/event/generator/ByteUtility.java trunk/org/apache/bsf/util/event/generator/Bytecode.class trunk/org/apache/bsf/util/event/generator/Bytecode.java trunk/org/apache/bsf/util/event/generator/EventAdapterGenerator$1.class trunk/org/apache/bsf/util/event/generator/EventAdapterGenerator.class trunk/org/apache/bsf/util/event/generator/EventAdapterGenerator.java trunk/org/apache/bsf/util/event/rgf/ trunk/org/apache/bsf/util/event/rgf/EventAdapterRegistry.java trunk/org/apache/bsf/util/type/ trunk/org/apache/bsf/util/type/TypeConvertor.class trunk/org/apache/bsf/util/type/TypeConvertor.java trunk/org/apache/bsf/util/type/TypeConvertorRegistry$1.class trunk/org/apache/bsf/util/type/TypeConvertorRegistry$2.class trunk/org/apache/bsf/util/type/TypeConvertorRegistry$3.class trunk/org/apache/bsf/util/type/TypeConvertorRegistry$4.class trunk/org/apache/bsf/util/type/TypeConvertorRegistry$5.class trunk/org/apache/bsf/util/type/TypeConvertorRegistry.class trunk/org/apache/bsf/util/type/TypeConvertorRegistry.java trunk/org/apache/commons/ trunk/org/apache/commons/logging/ trunk/org/apache/commons/logging/Log.class trunk/org/apache/commons/logging/LogConfigurationException.class trunk/org/apache/commons/logging/LogFactory$1.class trunk/org/apache/commons/logging/LogFactory$2.class trunk/org/apache/commons/logging/LogFactory$3.class trunk/org/apache/commons/logging/LogFactory$4.class trunk/org/apache/commons/logging/LogFactory$5.class trunk/org/apache/commons/logging/LogFactory.class trunk/org/apache/commons/logging/LogSource.class trunk/org/apache/commons/logging/impl/ trunk/org/apache/commons/logging/impl/AvalonLogger.class trunk/org/apache/commons/logging/impl/Jdk13LumberjackLogger.class trunk/org/apache/commons/logging/impl/Jdk14Logger.class trunk/org/apache/commons/logging/impl/Log4JLogger.class trunk/org/apache/commons/logging/impl/LogFactoryImpl.class trunk/org/apache/commons/logging/impl/LogKitLogger.class trunk/org/apache/commons/logging/impl/NoOpLog.class trunk/org/apache/commons/logging/impl/ServletContextCleaner.class trunk/org/apache/commons/logging/impl/SimpleLog$1.class trunk/org/apache/commons/logging/impl/SimpleLog.class trunk/org/apache/commons/logging/impl/WeakHashtable$1.class trunk/org/apache/commons/logging/impl/WeakHashtable$2.class trunk/org/apache/commons/logging/impl/WeakHashtable$Entry.class trunk/org/apache/commons/logging/impl/WeakHashtable$Referenced.class trunk/org/apache/commons/logging/impl/WeakHashtable$WeakKey.class trunk/org/apache/commons/logging/impl/WeakHashtable.class trunk/org/apache/taglibs/ trunk/org/apache/taglibs/bsf/ trunk/org/apache/taglibs/bsf/bsftag.class trunk/org/apache/taglibs/bsf/bsftag.java trunk/org/apache/taglibs/bsf/expression$1.class trunk/org/apache/taglibs/bsf/expression.class trunk/org/apache/taglibs/bsf/expression.java trunk/org/apache/taglibs/bsf/scriptlet$1.class trunk/org/apache/taglibs/bsf/scriptlet.class trunk/org/apache/taglibs/bsf/scriptlet.java trunk/org/codehaus/ trunk/org/codehaus/commons/ trunk/org/codehaus/commons/compiler/ trunk/org/codehaus/commons/compiler/AbstractCompilerFactory.class trunk/org/codehaus/commons/compiler/AbstractCompilerFactory.java trunk/org/codehaus/commons/compiler/AbstractJavaSourceClassLoader$ProtectionDomainFactory.class trunk/org/codehaus/commons/compiler/AbstractJavaSourceClassLoader.class trunk/org/codehaus/commons/compiler/AbstractJavaSourceClassLoader.java trunk/org/codehaus/commons/compiler/CausedException.class trunk/org/codehaus/commons/compiler/CausedException.java trunk/org/codehaus/commons/compiler/CompileException.class trunk/org/codehaus/commons/compiler/CompileException.java trunk/org/codehaus/commons/compiler/CompilerFactoryFactory.class trunk/org/codehaus/commons/compiler/CompilerFactoryFactory.java trunk/org/codehaus/commons/compiler/Cookable.class trunk/org/codehaus/commons/compiler/Cookable.java trunk/org/codehaus/commons/compiler/IClassBodyEvaluator.class trunk/org/codehaus/commons/compiler/IClassBodyEvaluator.java trunk/org/codehaus/commons/compiler/ICompilerFactory.class trunk/org/codehaus/commons/compiler/ICompilerFactory.java trunk/org/codehaus/commons/compiler/ICookable.class trunk/org/codehaus/commons/compiler/ICookable.java trunk/org/codehaus/commons/compiler/IExpressionEvaluator.class trunk/org/codehaus/commons/compiler/IExpressionEvaluator.java trunk/org/codehaus/commons/compiler/IScriptEvaluator.class trunk/org/codehaus/commons/compiler/IScriptEvaluator.java trunk/org/codehaus/commons/compiler/ISimpleCompiler.class trunk/org/codehaus/commons/compiler/ISimpleCompiler.java trunk/org/codehaus/commons/compiler/LocatedException.class trunk/org/codehaus/commons/compiler/LocatedException.java trunk/org/codehaus/commons/compiler/Location.class trunk/org/codehaus/commons/compiler/Location.java trunk/org/codehaus/commons/compiler/PrimitiveWrapper.class trunk/org/codehaus/commons/compiler/PrimitiveWrapper.java trunk/org/codehaus/commons/compiler/package-info.java trunk/org/codehaus/commons/compiler/samples/ trunk/org/codehaus/commons/compiler/samples/ClassBodyDemo.class trunk/org/codehaus/commons/compiler/samples/ClassBodyDemo.java trunk/org/codehaus/commons/compiler/samples/DemoBase.class trunk/org/codehaus/commons/compiler/samples/DemoBase.java trunk/org/codehaus/commons/compiler/samples/ExpressionDemo.class trunk/org/codehaus/commons/compiler/samples/ExpressionDemo.java trunk/org/codehaus/commons/compiler/samples/ScriptDemo.class trunk/org/codehaus/commons/compiler/samples/ScriptDemo.java trunk/org/codehaus/commons/compiler/samples/ShippingCost.class trunk/org/codehaus/commons/compiler/samples/ShippingCost.java trunk/org/codehaus/commons/compiler/samples/package.html trunk/org/codehaus/janino/ trunk/org/codehaus/janino/Access.class trunk/org/codehaus/janino/Access.java trunk/org/codehaus/janino/AntCompilerAdapter.class trunk/org/codehaus/janino/AntCompilerAdapter.java trunk/org/codehaus/janino/AstCompilationUnitGenerator.class trunk/org/codehaus/janino/AstCompilationUnitGenerator.java trunk/org/codehaus/janino/ByteArrayClassLoader.class trunk/org/codehaus/janino/ByteArrayClassLoader.java trunk/org/codehaus/janino/CachingJavaSourceClassLoader.class trunk/org/codehaus/janino/CachingJavaSourceClassLoader.java trunk/org/codehaus/janino/ClassBodyEvaluator.class trunk/org/codehaus/janino/ClassBodyEvaluator.java trunk/org/codehaus/janino/ClassFileIClass$1.class trunk/org/codehaus/janino/ClassFileIClass$2.class trunk/org/codehaus/janino/ClassFileIClass$3.class trunk/org/codehaus/janino/ClassFileIClass.class trunk/org/codehaus/janino/ClassFileIClass.java trunk/org/codehaus/janino/ClassLoaderIClassLoader.class trunk/org/codehaus/janino/ClassLoaderIClassLoader.java trunk/org/codehaus/janino/CodeContext$1.class trunk/org/codehaus/janino/CodeContext$Branch.class trunk/org/codehaus/janino/CodeContext$ExceptionTableEntry.class trunk/org/codehaus/janino/CodeContext$FixUp.class trunk/org/codehaus/janino/CodeContext$Inserter.class trunk/org/codehaus/janino/CodeContext$LineNumberOffset.class trunk/org/codehaus/janino/CodeContext$Offset.class trunk/org/codehaus/janino/CodeContext$OffsetBranch.class trunk/org/codehaus/janino/CodeContext$Relocatable.class trunk/org/codehaus/janino/CodeContext.class trunk/org/codehaus/janino/CodeContext.java trunk/org/codehaus/janino/Compiler$1.class trunk/org/codehaus/janino/Compiler$2.class trunk/org/codehaus/janino/Compiler$CompilerIClassLoader.class trunk/org/codehaus/janino/Compiler$SimpleWarningHandler.class trunk/org/codehaus/janino/Compiler.class trunk/org/codehaus/janino/Compiler.java trunk/org/codehaus/janino/CompilerFactory$1.class trunk/org/codehaus/janino/CompilerFactory$2.class trunk/org/codehaus/janino/CompilerFactory.class trunk/org/codehaus/janino/CompilerFactory.java trunk/org/codehaus/janino/DebuggingInformation.class trunk/org/codehaus/janino/DebuggingInformation.java trunk/org/codehaus/janino/Descriptor.class trunk/org/codehaus/janino/Descriptor.java trunk/org/codehaus/janino/ExpressionEvaluator$1.class trunk/org/codehaus/janino/ExpressionEvaluator.class trunk/org/codehaus/janino/ExpressionEvaluator.java trunk/org/codehaus/janino/FilterWarningHandler.class trunk/org/codehaus/janino/FilterWarningHandler.java trunk/org/codehaus/janino/IClass$1$1.class trunk/org/codehaus/janino/IClass$1.class trunk/org/codehaus/janino/IClass$IConstructor.class trunk/org/codehaus/janino/IClass$IField.class trunk/org/codehaus/janino/IClass$IInvocable.class trunk/org/codehaus/janino/IClass$IMember.class trunk/org/codehaus/janino/IClass$IMethod.class trunk/org/codehaus/janino/IClass$PrimitiveIClass.class trunk/org/codehaus/janino/IClass.class trunk/org/codehaus/janino/IClass.java trunk/org/codehaus/janino/IClassLoader.class trunk/org/codehaus/janino/IClassLoader.java trunk/org/codehaus/janino/JaninoRuntimeException.class trunk/org/codehaus/janino/JaninoRuntimeException.java trunk/org/codehaus/janino/Java$AbstractTypeBodyDeclaration.class trunk/org/codehaus/janino/Java$AbstractTypeDeclaration.class trunk/org/codehaus/janino/Java$AlternateConstructorInvocation.class trunk/org/codehaus/janino/Java$AmbiguousName.class trunk/org/codehaus/janino/Java$AnonymousClassDeclaration.class trunk/org/codehaus/janino/Java$ArrayAccessExpression.class trunk/org/codehaus/janino/Java$ArrayInitializer.class trunk/org/codehaus/janino/Java$ArrayInitializerOrRvalue.class trunk/org/codehaus/janino/Java$ArrayLength.class trunk/org/codehaus/janino/Java$ArrayType.class trunk/org/codehaus/janino/Java$Assignment.class trunk/org/codehaus/janino/Java$Atom.class trunk/org/codehaus/janino/Java$BasicType.class trunk/org/codehaus/janino/Java$BinaryOperation.class trunk/org/codehaus/janino/Java$Block.class trunk/org/codehaus/janino/Java$BlockStatement.class trunk/org/codehaus/janino/Java$BooleanRvalue.class trunk/org/codehaus/janino/Java$BreakStatement.class trunk/org/codehaus/janino/Java$BreakableStatement.class trunk/org/codehaus/janino/Java$Cast.class trunk/org/codehaus/janino/Java$CatchClause.class trunk/org/codehaus/janino/Java$ClassDeclaration.class trunk/org/codehaus/janino/Java$ClassLiteral.class trunk/org/codehaus/janino/Java$CompilationUnit$ImportDeclaration.class trunk/org/codehaus/janino/Java$CompilationUnit$SingleStaticImportDeclaration.class trunk/org/codehaus/janino/Java$CompilationUnit$SingleTypeImportDeclaration.class trunk/org/codehaus/janino/Java$CompilationUnit$StaticImportOnDemandDeclaration.class trunk/org/codehaus/janino/Java$CompilationUnit$TypeImportOnDemandDeclaration.class trunk/org/codehaus/janino/Java$CompilationUnit.class trunk/org/codehaus/janino/Java$ConditionalExpression.class trunk/org/codehaus/janino/Java$ConstructorDeclarator.class trunk/org/codehaus/janino/Java$ConstructorInvocation.class trunk/org/codehaus/janino/Java$ContinuableStatement.class trunk/org/codehaus/janino/Java$ContinueStatement.class trunk/org/codehaus/janino/Java$Crement.class trunk/org/codehaus/janino/Java$DoStatement.class trunk/org/codehaus/janino/Java$DocCommentable.class trunk/org/codehaus/janino/Java$EmptyStatement.class trunk/org/codehaus/janino/Java$EnclosingScopeOfTypeDeclaration.class trunk/org/codehaus/janino/Java$ExpressionStatement.class trunk/org/codehaus/janino/Java$FieldAccess.class trunk/org/codehaus/janino/Java$FieldAccessExpression.class trunk/org/codehaus/janino/Java$FieldDeclaration.class trunk/org/codehaus/janino/Java$ForStatement.class trunk/org/codehaus/janino/Java$FunctionDeclarator$FormalParameter.class trunk/org/codehaus/janino/Java$FunctionDeclarator.class trunk/org/codehaus/janino/Java$IfStatement.class trunk/org/codehaus/janino/Java$Initializer.class trunk/org/codehaus/janino/Java$InnerClassDeclaration.class trunk/org/codehaus/janino/Java$Instanceof.class trunk/org/codehaus/janino/Java$InterfaceDeclaration.class trunk/org/codehaus/janino/Java$Invocation.class trunk/org/codehaus/janino/Java$LabeledStatement.class trunk/org/codehaus/janino/Java$Literal.class trunk/org/codehaus/janino/Java$LocalClassDeclaration.class trunk/org/codehaus/janino/Java$LocalClassDeclarationStatement.class trunk/org/codehaus/janino/Java$LocalVariable.class trunk/org/codehaus/janino/Java$LocalVariableAccess.class trunk/org/codehaus/janino/Java$LocalVariableDeclarationStatement.class trunk/org/codehaus/janino/Java$LocalVariableSlot.class trunk/org/codehaus/janino/Java$Locatable.class trunk/org/codehaus/janino/Java$Located$1.class trunk/org/codehaus/janino/Java$Located.class trunk/org/codehaus/janino/Java$Lvalue.class trunk/org/codehaus/janino/Java$MemberClassDeclaration.class trunk/org/codehaus/janino/Java$MemberInterfaceDeclaration.class trunk/org/codehaus/janino/Java$MemberTypeDeclaration.class trunk/org/codehaus/janino/Java$MethodDeclarator.class trunk/org/codehaus/janino/Java$MethodInvocation.class trunk/org/codehaus/janino/Java$NamedClassDeclaration.class trunk/org/codehaus/janino/Java$NamedTypeDeclaration.class trunk/org/codehaus/janino/Java$NewAnonymousClassInstance.class trunk/org/codehaus/janino/Java$NewArray.class trunk/org/codehaus/janino/Java$NewClassInstance.class trunk/org/codehaus/janino/Java$NewInitializedArray.class trunk/org/codehaus/janino/Java$Package.class trunk/org/codehaus/janino/Java$PackageDeclaration.class trunk/org/codehaus/janino/Java$PackageMemberClassDeclaration.class trunk/org/codehaus/janino/Java$PackageMemberInterfaceDeclaration.class trunk/org/codehaus/janino/Java$PackageMemberTypeDeclaration.class trunk/org/codehaus/janino/Java$Padder.class trunk/org/codehaus/janino/Java$ParameterAccess.class trunk/org/codehaus/janino/Java$ParenthesizedExpression.class trunk/org/codehaus/janino/Java$QualifiedThisReference.class trunk/org/codehaus/janino/Java$ReferenceType.class trunk/org/codehaus/janino/Java$ReturnStatement.class trunk/org/codehaus/janino/Java$Rvalue$1.class trunk/org/codehaus/janino/Java$Rvalue.class trunk/org/codehaus/janino/Java$RvalueMemberType.class trunk/org/codehaus/janino/Java$Scope.class trunk/org/codehaus/janino/Java$SimpleType.class trunk/org/codehaus/janino/Java$Statement.class trunk/org/codehaus/janino/Java$SuperConstructorInvocation.class trunk/org/codehaus/janino/Java$SuperclassFieldAccessExpression.class trunk/org/codehaus/janino/Java$SuperclassMethodInvocation.class trunk/org/codehaus/janino/Java$SwitchStatement$SwitchBlockStatementGroup.class trunk/org/codehaus/janino/Java$SwitchStatement.class trunk/org/codehaus/janino/Java$SynchronizedStatement.class trunk/org/codehaus/janino/Java$ThisReference.class trunk/org/codehaus/janino/Java$ThrowStatement.class trunk/org/codehaus/janino/Java$TryStatement.class trunk/org/codehaus/janino/Java$Type.class trunk/org/codehaus/janino/Java$TypeBodyDeclaration.class trunk/org/codehaus/janino/Java$TypeDeclaration.class trunk/org/codehaus/janino/Java$UnaryOperation.class trunk/org/codehaus/janino/Java$VariableDeclarator.class trunk/org/codehaus/janino/Java$WhileStatement.class trunk/org/codehaus/janino/Java.class trunk/org/codehaus/janino/Java.java trunk/org/codehaus/janino/JavaSourceClassLoader.class trunk/org/codehaus/janino/JavaSourceClassLoader.java trunk/org/codehaus/janino/JavaSourceIClassLoader.class trunk/org/codehaus/janino/JavaSourceIClassLoader.java trunk/org/codehaus/janino/MethodDescriptor.class trunk/org/codehaus/janino/MethodDescriptor.java trunk/org/codehaus/janino/Mod.class trunk/org/codehaus/janino/Mod.java trunk/org/codehaus/janino/Opcode.class trunk/org/codehaus/janino/Opcode.java trunk/org/codehaus/janino/Parser$ClassDeclarationContext.class trunk/org/codehaus/janino/Parser$InterfaceDeclarationContext.class trunk/org/codehaus/janino/Parser.class trunk/org/codehaus/janino/Parser.java trunk/org/codehaus/janino/ReflectionIClass$1.class trunk/org/codehaus/janino/ReflectionIClass$ReflectionIConstructor.class trunk/org/codehaus/janino/ReflectionIClass$ReflectionIField.class trunk/org/codehaus/janino/ReflectionIClass$ReflectionIMethod.class trunk/org/codehaus/janino/ReflectionIClass.class trunk/org/codehaus/janino/ReflectionIClass.java trunk/org/codehaus/janino/ResourceFinderIClassLoader.class trunk/org/codehaus/janino/ResourceFinderIClassLoader.java trunk/org/codehaus/janino/Scanner$1.class trunk/org/codehaus/janino/Scanner$EOFToken.class trunk/org/codehaus/janino/Scanner$IdentifierToken.class trunk/org/codehaus/janino/Scanner$KeywordToken.class trunk/org/codehaus/janino/Scanner$LiteralToken.class trunk/org/codehaus/janino/Scanner$OperatorToken.class trunk/org/codehaus/janino/Scanner$Token.class trunk/org/codehaus/janino/Scanner.class trunk/org/codehaus/janino/Scanner.java trunk/org/codehaus/janino/ScriptEvaluator$1.class trunk/org/codehaus/janino/ScriptEvaluator$1MethodWrapper.class trunk/org/codehaus/janino/ScriptEvaluator.class trunk/org/codehaus/janino/ScriptEvaluator.java trunk/org/codehaus/janino/SimpleCompiler$1.class trunk/org/codehaus/janino/SimpleCompiler$2.class trunk/org/codehaus/janino/SimpleCompiler$AuxiliaryClassLoader.class trunk/org/codehaus/janino/SimpleCompiler.class trunk/org/codehaus/janino/SimpleCompiler.java trunk/org/codehaus/janino/UnicodeUnescapeException.class trunk/org/codehaus/janino/UnicodeUnescapeException.java trunk/org/codehaus/janino/UnicodeUnescapeReader.class trunk/org/codehaus/janino/UnicodeUnescapeReader.java trunk/org/codehaus/janino/UnitCompiler$1.class trunk/org/codehaus/janino/UnitCompiler$10.class trunk/org/codehaus/janino/UnitCompiler$10UCE.class trunk/org/codehaus/janino/UnitCompiler$11.class trunk/org/codehaus/janino/UnitCompiler$11UCE.class trunk/org/codehaus/janino/UnitCompiler$12.class trunk/org/codehaus/janino/UnitCompiler$12UCE.class trunk/org/codehaus/janino/UnitCompiler$13.class trunk/org/codehaus/janino/UnitCompiler$13UCE.class trunk/org/codehaus/janino/UnitCompiler$14.class trunk/org/codehaus/janino/UnitCompiler$14UCE.class trunk/org/codehaus/janino/UnitCompiler$15.class trunk/org/codehaus/janino/UnitCompiler$15UCE.class trunk/org/codehaus/janino/UnitCompiler$16.class trunk/org/codehaus/janino/UnitCompiler$17.class trunk/org/codehaus/janino/UnitCompiler$18.class trunk/org/codehaus/janino/UnitCompiler$19.class trunk/org/codehaus/janino/UnitCompiler$1UCE.class trunk/org/codehaus/janino/UnitCompiler$2.class trunk/org/codehaus/janino/UnitCompiler$20.class trunk/org/codehaus/janino/UnitCompiler$21.class trunk/org/codehaus/janino/UnitCompiler$22.class trunk/org/codehaus/janino/UnitCompiler$... [truncated message content] |
From: <or...@us...> - 2011-04-02 17:48:06
|
Revision: 4 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=4&view=rev Author: orexx Date: 2011-04-02 17:47:55 +0000 (Sat, 02 Apr 2011) Log Message: ----------- Changes including Apple/MacOSX support, adding 'ooRexxTry.rxj', NetRexx examples, besides other fixes. Modified Paths: -------------- trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/changesOOo.txt trunk/bsf4oorexx.dev/bin/BSF.CLS trunk/bsf4oorexx.dev/bin/UNO.CLS trunk/bsf4oorexx.dev/bin/rexxj2.sh trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt trunk/bsf4oorexx.dev/changesOOo.txt trunk/bsf4oorexx.dev/credits.txt trunk/bsf4oorexx.dev/install/infoBSF-oo.rxj trunk/bsf4oorexx.dev/install/infoBSF.rxj trunk/bsf4oorexx.dev/install/linux/resources/bsf4oorexx.desktop trunk/bsf4oorexx.dev/install/linux/resources/bsf4oorexx.xml trunk/bsf4oorexx.dev/install/linux/resources/oorexx.desktop trunk/bsf4oorexx.dev/install/linux/resources/oorexx.xml trunk/bsf4oorexx.dev/install/linux/resources/oorexx4ooo.desktop trunk/bsf4oorexx.dev/install/linux/resources/oorexx4ooo.xml trunk/bsf4oorexx.dev/install/linux/resources/oorexxpause.desktop trunk/bsf4oorexx.dev/install/orx2reg.rex trunk/bsf4oorexx.dev/install/rexxpaws.rex trunk/bsf4oorexx.dev/install/runRexxScriptJava.sh trunk/bsf4oorexx.dev/install/runRexxScriptOOo.sh trunk/bsf4oorexx.dev/install/setupAllAndRun.rex trunk/bsf4oorexx.dev/install/setupBSF.rex trunk/bsf4oorexx.dev/install/setupFileAssociations.rex trunk/bsf4oorexx.dev/install/setupJava.rex trunk/bsf4oorexx.dev/install/setupOOo.rex trunk/bsf4oorexx.dev/readme-Linux.txt trunk/bsf4oorexx.dev/rexxj.sh trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc trunk/bsf4oorexx.dev/source_cc/lin_bsf4rexx-32.mak trunk/bsf4oorexx.dev/source_cc/lin_bsf4rexx-64.mak trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.java trunk/bsf4oorexx.dev/source_java/RexxDispatcher.class trunk/bsf4oorexx.dev/source_java/RexxDispatcher.java trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/oo/Bean.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/lex/procedural/Bean.testGroup trunk/bsf4oorexx.dev/testUnits/bsf4rexx/rgf/C_interfaceClasses/Test_ITest.java trunk/bsf4oorexx.dev/testUnits/ooRexxUnit/OOREXXUNIT.CLS trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/frontend_UNO_API_info.rxo trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx$1.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx.java trunk/com/sun/star/script/framework/provider/oorexx/ScriptImpl.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$_ScriptProviderForooRexx.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.class trunk/compile_all.cmd trunk/createDistributionForBSF4ooRexx4.cmd trunk/org/apache/bsf/BSFDeclaredBean.class trunk/org/apache/bsf/BSFEngine.class trunk/org/apache/bsf/BSFException.class trunk/org/apache/bsf/BSFManager$1.class trunk/org/apache/bsf/BSFManager$2.class trunk/org/apache/bsf/BSFManager$3.class trunk/org/apache/bsf/BSFManager$4.class trunk/org/apache/bsf/BSFManager$5.class trunk/org/apache/bsf/BSFManager$6.class trunk/org/apache/bsf/BSFManager$7.class trunk/org/apache/bsf/BSFManager$8.class trunk/org/apache/bsf/BSFManager.class trunk/org/apache/bsf/BSFManager.java trunk/org/apache/bsf/BSF_Log.class trunk/org/apache/bsf/BSF_Log.java trunk/org/apache/bsf/BSF_LogFactory.class trunk/org/apache/bsf/Main$1.class trunk/org/apache/bsf/Main.class trunk/org/apache/bsf/RGFInfo.class trunk/org/apache/bsf/engines/jacl/BSFCommand.class trunk/org/apache/bsf/engines/jacl/JaclEngine.class trunk/org/apache/bsf/engines/java/JavaEngine$1.class trunk/org/apache/bsf/engines/java/JavaEngine$GeneratedFile.class trunk/org/apache/bsf/engines/java/JavaEngine.class trunk/org/apache/bsf/engines/javaclass/JavaClassEngine.class trunk/org/apache/bsf/engines/javascript/JavaScriptEngine.class trunk/org/apache/bsf/engines/jython/JythonEngine$BSFPythonInterpreter.class trunk/org/apache/bsf/engines/jython/JythonEngine.class trunk/org/apache/bsf/engines/netrexx/NetRexxEngine$1.class trunk/org/apache/bsf/engines/netrexx/NetRexxEngine$GeneratedFile.class trunk/org/apache/bsf/engines/netrexx/NetRexxEngine.class trunk/org/apache/bsf/engines/xslt/XSLTEngine.class trunk/org/apache/bsf/engines/xslt/XSLTResultNode.class trunk/org/apache/bsf/test/BSFEngineTestTmpl.class trunk/org/apache/bsf/test/BSFTest.class trunk/org/apache/bsf/test/engineTests/jaclTest.class trunk/org/apache/bsf/test/engineTests/javascriptTest.class trunk/org/apache/bsf/test/engineTests/jythonTest.class trunk/org/apache/bsf/test/engineTests/netrexxTest.class trunk/org/apache/bsf/test/fakeEngine.class trunk/org/apache/bsf/test/utilTests/EngineUtilsTest.class trunk/org/apache/bsf/test/utilTests/IOUtilsTest.class trunk/org/apache/bsf/test/utilTests/StringUtilsTest.class trunk/org/apache/bsf/test/utilTests/TestBean.class trunk/org/apache/bsf/util/BSFEventProcessor.class trunk/org/apache/bsf/util/BSFEventProcessorReturningEventInfos.class trunk/org/apache/bsf/util/BSFFunctions.class trunk/org/apache/bsf/util/CodeBuffer.class trunk/org/apache/bsf/util/DebugLog$1.class trunk/org/apache/bsf/util/DebugLog.class trunk/org/apache/bsf/util/IOUtils.class trunk/org/apache/bsf/util/IndentWriter.class trunk/org/apache/bsf/util/JavaUtils.class trunk/org/apache/bsf/util/MethodUtils$1.class trunk/org/apache/bsf/util/MethodUtils$MoreSpecific.class trunk/org/apache/bsf/util/MethodUtils.class trunk/org/apache/bsf/util/ObjInfo.class trunk/org/apache/bsf/util/ObjectRegistry.class trunk/org/apache/bsf/util/ScriptSymbolTable.class trunk/org/apache/bsf/util/StringUtils.class trunk/org/apache/bsf/util/cf/CFDriver.class trunk/org/apache/bsf/util/cf/CodeFormatter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_ActionAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_AdjustmentAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_ComponentAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_ContainerAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_FocusAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_ItemAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_KeyAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_MouseAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_MouseMotionAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_TextAdapter.class trunk/org/apache/bsf/util/event/adapters/java_awt_event_WindowAdapter.class trunk/org/apache/bsf/util/event/adapters/java_beans_PropertyChangeAdapter.class trunk/org/apache/bsf/util/event/adapters/java_beans_VetoableChangeAdapter.class trunk/org/apache/bsf/util/event/generator/ByteUtility.class trunk/org/apache/bsf/util/event/generator/Bytecode.class trunk/org/oorexx/datergf/DTC.class trunk/org/oorexx/datergf/DateFormatRGF.class trunk/org/oorexx/datergf/DateRGF.class trunk/org/oorexx/datergf/DateTimeRGF.class trunk/org/oorexx/datergf/TimeRGF.class trunk/org/oorexx/misc/RgfFilter.class trunk/org/oorexx/misc/Test.class trunk/org/oorexx/uno/RgfReflectUNO.class trunk/org/oorexx/uno/RgfReflectUNO.java trunk/org/rexxla/bsf/RexxDispatcher.class trunk/org/rexxla/bsf/RexxDispatcher.java trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java trunk/samples/DOM/www.rexxla.org.htm trunk/samples/ReneJansen/jdbc.jrexx trunk/samples/SAX/www.rexxla.org.htm Added Paths: ----------- trunk/bsf4oorexx.dev/bin/rexxj2-32.sh trunk/bsf4oorexx.dev/bin/rexxj2-64.sh trunk/bsf4oorexx.dev/images/linux/hicolor/bsf4oorexx_logo_128.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx4ooo_logo_128.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx_logo_128.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexxtry_128.png trunk/bsf4oorexx.dev/images/linux/hicolor/oorexxtry_256.png trunk/bsf4oorexx.dev/images/linux/readme.txt trunk/bsf4oorexx.dev/images/windows/oorexxtry.ico trunk/bsf4oorexx.dev/information/2010_Netrexx_ooRexx.pdf trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_home.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_information.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_menu.directory trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_menu.menu trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_oorexxtry.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_reinstall.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_samples.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_setupjava.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_submenu_installation.directory trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_uninstall.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_utilities.desktop trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/ trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/LICENSE trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/ trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/README trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/html/ trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/html/index.html trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/html/xdg-desktop-icon.html trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/html/xdg-desktop-menu.html trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/html/xdg-email.html trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/html/xdg-icon-resource.html trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/html/xdg-mime.html trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/html/xdg-open.html trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/html/xdg-screensaver.html trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/man/ trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/man/xdg-desktop-icon.1 trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/man/xdg-desktop-menu.1 trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/man/xdg-email.1 trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/man/xdg-icon-resource.1 trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/man/xdg-mime.1 trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/man/xdg-open.1 trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/man/xdg-screensaver.1 trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/xdg-desktop-icon trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/xdg-desktop-menu trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/xdg-email trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/xdg-icon-resource trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/xdg-mime trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/xdg-open trunk/bsf4oorexx.dev/install/linux/resources/xdg-utils/scripts/xdg-screensaver trunk/bsf4oorexx.dev/readme-MacOSX.txt trunk/bsf4oorexx.dev/source_cc/apple-Makefile.mak trunk/bsf4oorexx.dev/source_cc/associationChanged.exe trunk/bsf4oorexx.dev/utilities/ooRexxTry.pdf trunk/bsf4oorexx.dev/utilities/ooRexxTry.png trunk/bsf4oorexx.dev/utilities/ooRexxTry.rc trunk/bsf4oorexx.dev/utilities/ooRexxTry.rxj trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx$1$1.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx$2.class trunk/samples/NetRexx/ trunk/samples/NetRexx/index.html trunk/samples/NetRexx/nrxRunRexx_01.class trunk/samples/NetRexx/nrxRunRexx_01.nrx trunk/samples/NetRexx/nrxRunRexx_02.class trunk/samples/NetRexx/nrxRunRexx_02.nrx trunk/samples/NetRexx/nrxRunRexx_03.class trunk/samples/NetRexx/nrxRunRexx_03.nrx trunk/samples/NetRexx/nrxRunRexx_04.class trunk/samples/NetRexx/nrxRunRexx_04.nrx trunk/samples/NetRexx/rgf_00_runRexx.nrx trunk/samples/NetRexx/rgf_01_runRexx.class trunk/samples/NetRexx/rgf_01_runRexx.nrx trunk/samples/NetRexx/rgf_01b_runRexx.nrx trunk/samples/NetRexx/rgf_02_runRexxArg.class trunk/samples/NetRexx/rgf_02_runRexxArg.nrx trunk/samples/NetRexx/rgf_03_runRexxGetReturnValue.class trunk/samples/NetRexx/rgf_03_runRexxGetReturnValue.nrx trunk/samples/NetRexx/rgf_04_runRexxGetReturnValue.class trunk/samples/NetRexx/rgf_04_runRexxGetReturnValue.nrx trunk/samples/NetRexx/rgf_05_runRexxEnvironment.class trunk/samples/NetRexx/rgf_05_runRexxEnvironment.nrx Removed Paths: ------------- trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_home.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_information.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_menu.directory trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_menu.menu trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_reinstall.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_samples.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_setupjava.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_uninstall.desktop trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_utilities.desktop trunk/bsf4oorexx.dev/source_cc/asm_LICENSE.TXT Modified: trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml =================================================================== --- trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml 2011-04-02 17:47:55 UTC (rev 4) @@ -3,7 +3,7 @@ xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink"> - <version value="135.20101204"/> + <version value="136.20110218"/> <identifier value="org.oorexx.uno.ScriptProviderForooRexx.package"/> Modified: trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/changesOOo.txt =================================================================== --- trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/changesOOo.txt 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/changesOOo.txt 2011-04-02 17:47:55 UTC (rev 4) @@ -1,3 +1,35 @@ +-------------------------------------- 2011-02-21 ---------------------------------- +- utilities/OOo/UNO_API_info/frontend_UNO_API_info.rxo + + - make sure to act upon the Apple application quit event + - adding icon image to JFrames + +- bin/UNO.CLS + + - Apple MacOSX-support added for displaying correct default icon in dock + +-------------------------------------- 2011-02-19 ---------------------------------- +- utilities/OOo/UNO_API_info/frontend_UNO_API_info.rxo + + - using Toolkit's getMenuShortcutKeyMask to define menu short-cut key + +-------------------------------------- 2011-02-17 ---------------------------------- +- ScriptProviderForooRexx.oxt + + - GUI will now be created via SwingUtilities.invokeLater(), + cf. <http://www.openoffice.org/issues/show_bug.cgi?id=92926> to + cater for MacOSX behaviour + +-------------------------------------- 2011-01-24 ---------------------------------- +- setupOOo.rex + + - escape "%" with "[25x]" in path on Windows + +-------------------------------------- 2010-12-08 ---------------------------------- +- installation: + + - changed mimetype from "application/x-rexx-java-ooo" to "text/x-rexx-java-ooo" + -------------------------------------- 2010-08-14 ---------------------------------- - Installation Modified: trunk/bsf4oorexx.dev/bin/BSF.CLS =================================================================== --- trunk/bsf4oorexx.dev/bin/BSF.CLS 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/bin/BSF.CLS 2011-04-02 17:47:55 UTC (rev 4) @@ -12,6 +12,16 @@ needs: ooRexx 4.0.1 (cf. <http://www.ooRexx.org>) and BSF4ooRexx 4.0 or greater date: + 2011-02-21, rgf: - define new entries in .bsf4rexx + - "OPSYS" ... operating system name from "PARSE SOURCE opsys ." plus + "OPSYS1", "OPSYS2", "OPSYS3" with the first one, two, three letters in uppercase + - MacOSX: "APPLE_APPLICATION" the Apple application object representing the running Rexx program + - "BSF4OOREXX_{016|032|048|064|128|256}": if defined path to PNG-icon + - "OOREXX4OOO_{016|032|048|064|128|256}": if defined path to PNG-icon + + - MacOSX: remove About and Preferences Apple menu entries + - MacOSX: define Dock icon + 2011-02-20, rgf: - adding MacOSX related properties 2010-07-12, rgf: - .bsf.dialog::inputBox: now accepting a Java Object array for options 2010-06-10, rgf: - changed environment variable from 'BSF4Rexx.JavaStartupOptions' to 'BSF4Rexx_JavaStartupOptions'; reason: bash cannot process @@ -304,7 +314,7 @@ - version: 4.0.4 (20100610) + version: 4.0.6 (20110220) authors: (c) 2001-2009 Rony G. Flatscher, University of Augsburg, University of Essen, WU (pronounced: "vey-uh") Vienna; @@ -317,7 +327,7 @@ ------------------------ Apache Version 2.0 license ------------------------- - Copyright 2001-2010 Rony G. Flatscher + Copyright 2001-2011 Rony G. Flatscher Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -335,7 +345,7 @@ ------------------------ Common Public License 1.0 -------------------------- - Copyright 2001-2010 Rony G. Flatscher + Copyright 2001-2011 Rony G. Flatscher This program and the accompanying materials are made available under the terms of the Common Public License v1.0 which accompanies this distribution. @@ -365,16 +375,23 @@ raise syntax 3.900 array (errString) end + parse source opsys . -- get name of operating system, rgf, 2010-02-20 if BsfInvokedBy()=0 then -- JVM not yet loaded do -- call BsfLoadJava -- process Java runtime args, if any jso=value('BSF4Rexx_JavaStartupOptions', ,"ENVIRONMENT") + + if opsys="MACOSX" then -- as of 2010-02-20: if loading Java via Rexx, awt-event thread does not work + jso=(jso "-Djava.awt.headless=true")~strip -- make sure that Java hints at the cause of the problem + arr=parseJavaOptions(jso) stmt=createJavaLoadStatement(arr) -- create the BsfLoadJava-statement +/* if jso<>"" then -- environment variable set, if so, show its value - say "... using environment variable 'BSF4Rexx_JavaStartupOptions' to configure Java:" pp(jso) + say "BSF.CLS: ... using environment variable 'BSF4Rexx_JavaStartupOptions' to configure Java:" pp(jso) "..." +*/ interpret stmt -- carry out the statement in the string end @@ -386,13 +403,32 @@ call initialize.BSF.dir -- set up .bsf4rexx and its synonym .b4r - .bsf4rexx~version="405.20100712" -- set version + .bsf4rexx~version="406.20110328" -- set version + .bsf4rexx~opSys =opsys -- save operating system name as supplied by Rexx' PARSE SOURCE + .bsf4rexx~opSys1 =opsys~left(1)~upper -- save operating system name's initial letter in uppercase + .bsf4rexx~opSys2 =opsys~left(2)~upper -- save operating system name's first two letters in uppercase + .bsf4rexx~opSys3 =opsys~left(3)~upper -- save operating system name's first two letters in uppercase .bsf.dialog~setDefaultComponent -- Initialize the default component object (cannot be done in class' constructor) .local~bsf=.bsf -- save .BSF in .local as well, to make it findable in callback situations + call getAndSetPathToIcons + + if opsys="MACOSX" then + do + .java.lang.system~setProperty('apple.laf.useScreenMenuBar','true') -- just used on Macs: use Apple's menu dock, for JFrame-menus insteadof the window's menu bar + -- by default hide "About" and "Preferences" menu in Apple's menu bar + app=bsf.loadClass("com.apple.eawt.Application")~getApplication + .bsf4rexx~apple_application=app -- get and save Apple's application object to ease use in dependent programs + app~removeAboutMenuItem + app~removePreferencesMenuItem + if .bsf4rexx~hasEntry("bsf4oorexx_256") then + app~setDockIconImage(.bsf~new("javax.swing.ImageIcon",.bsf4rexx~bsf4oorexx_256)~getImage) + end + call BSfShowErrorMessage .false -- turn off displaying the Java exception message (leftover from the very early BSF4Rexx days) + return syntax: @@ -401,6 +437,57 @@ ::requires "BSF4ooRexx" library +::routine getAndSetPathToIcons -- rgf, 2011-02-21: find path to icons, if found save icons + opsys=.bsf4rexx~opsys~left(1) -- get first letter of operating system (L=Linux, M=MacOSX, W=Windows, ...) + + parse source opsys +1 1 . kind path2this + + if opsys="W" then + do + paths=.array~of(filespec("Location", path2this)"install\images\linux\hicolor\") + end + else + do + paths=.array~of(filespec("Location", path2this)"install/images/linux/hicolor/", - -- look in directory of this program (may be linked to somewhere else) + "/opt/BSF4ooRexx/install/images/linux/hicolor/", - -- fallback location + "/Applications/BSF4ooRexx.app/Current/Resources/", - -- hypothetic location on MacOSX (may need adjustment) + "/Users/rony/bsf4oorexx.201012/root201012/trunk/bsf4oorexx.dev/images/linux/hicolor/" - -- Rony's developer path (to be removed) + ) + end + + path2icon="" + do entry over paths + res=SysFileExists(entry) + if res=1 then + do + path2icon=qualify(entry) +-- say "... BSF.CLS::getAndSetPathToIcons (debug): - path2icon found! ["path2icon"] ..." + end + end + if path2icon="" then return -- no path found + + path2icon=path2icon || .bsf4rexx~file.separator -- append file separator + + -- create entries to exisiting icon files in the given resolutions + imageNames=.array~of("bsf4oorexx", "oorexx4ooo") + do res over .array~of("016", "032", "064", "048", "128", "256") + do name over imageNames + tmpName=name"_"res + fullPath=path2icon || tmpName".png" + if SysFileExists(fullPath) then + do + .bsf4rexx~setEntry(tmpName, fullPath) +-- say "... BSF.CLS::getAndSetPathToIcons (debug):" tmpName "->" fullPath "..." + end + end + end + + return + + + + + /* Initialize BSF.DIR which is stored with the BSF class object, such that each interpreter instance is separated from each other w.r.t. the objects stored in there. Modified: trunk/bsf4oorexx.dev/bin/UNO.CLS =================================================================== --- trunk/bsf4oorexx.dev/bin/UNO.CLS 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/bin/UNO.CLS 2011-04-02 17:47:55 UTC (rev 4) @@ -6,6 +6,7 @@ last change: $Revision: 803 $ $Author: Administrator $ $Date: 2010-07-24 19:09:19 +0200 (Sat, 24 Jul 2010) $ changed: + 2011-02-21, ---rgf, - Apple MacOSX-support added for displaying correct default icon in dock 2010-07-24, ---rgf, - made the routine uno.determineScriptLocation() script language independent 2010-07-20, ---rgf, - uno.createDesktop() now returns the XDesktop interface to the service @@ -273,7 +274,7 @@ 2006-01-03, ---rgf, corrected inline documentation - version: 1.3.5 + version: 1.3.6 name: UNO.CLS purpose: allow interfacing with UNO components (via Java), tested with OpenOffice.org, v1.1.x and up needs: BSF4Rexx, BSF.CLS, UNO_XINTERFACES.RXO @@ -281,7 +282,7 @@ license: ------------------------ Apache Version 2.0 license ------------------------- - Copyright (C) 2005-2010 Rony G. Flatscher + Copyright (C) 2005-2011 Rony G. Flatscher Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -299,6 +300,16 @@ call initialize.uno.dir -- make sure .UNO's uno.dir object is initialized +if .bsf4rexx~opsys="MACOSX" then -- on MacOSX display the standard ooRexx4OOo logo +do + -- by default display the bsf4oorexx icon + if .bsf4rexx~hasEntry("oorexx4ooo_256") then + do + .bsf4rexx~apple_application~setDockIconImage(.bsf~new("javax.swing.ImageIcon",.bsf4rexx~oorexx4ooo_256)~getImage) +-- say "... UNO.CLS found icon !!" + end +end + -- do not show BSFException messages as UNO.CLS will show them as popups, if necessary call bsfShowErrorMessage .false @@ -307,7 +318,7 @@ .uno~nil=.uno~any~void -- if using in comparisons, then use "uno.areSame(unoObject, .uno~nil))" .uno~nil_name=.uno~any~objectname -- index name of entry in BSFRegistry on the Java side -.uno~version="135.20100724" -- set version number +.uno~version="136.20110221" -- set version number -- XPropertySet-behaviour with getPropertyValue and setPropertyValue .uno~xPropertySetAutoCase=.true -- if prop name not found pick a matching case, if possible Added: trunk/bsf4oorexx.dev/bin/rexxj2-32.sh =================================================================== --- trunk/bsf4oorexx.dev/bin/rexxj2-32.sh (rev 0) +++ trunk/bsf4oorexx.dev/bin/rexxj2-32.sh 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,38 @@ +# Purpose: load and run Rexx script via Java, allow for supplying arguments to the Rexx script +# Author: Rony G. Flatscher +# Date: 2006-01-02 +# Changed: 2007-02-03, ---rgf, renamed file, changed year-range +# 2010-06-10, ---rgf, honor environment variable 'BSF4Rexx.JavaStartupOptions', if set +# 2011-02-22, ---rgf, force 64-Bit-Java to run in 32-Bit +# Remark: Rexx script can retrieve all arguments as passed to Java via the BSFRegistry, including +# the name of the Rexx script to be invoked/dispatched +# +# Rexx: args=bsf("lookupBean", "allCommandLineArguments") +# or +# ooRexx: args=.bsf~bsf.lookupBean("allCommandLineArguments") +# +# license: +# ------------------------ Apache Version 2.0 license ------------------------- +# Copyright 2006-2011 Rony G. Flatscher +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +if [ "$BSF4Rexx_JavaStartupOptions" == "" ] +then + java -d32 org.rexxla.bsf.RexxDispatcher $* +else + echo "... using environment variable 'BSF4Rexx_JavaStartupOptions' to configure Java: [$BSF4Rexx_JavaStartupOptions]" + java -d32 $BSF4Rexx_JavaStartupOptions org.rexxla.bsf.RexxDispatcher $* +fi + Property changes on: trunk/bsf4oorexx.dev/bin/rexxj2-32.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/bin/rexxj2-64.sh =================================================================== --- trunk/bsf4oorexx.dev/bin/rexxj2-64.sh (rev 0) +++ trunk/bsf4oorexx.dev/bin/rexxj2-64.sh 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,38 @@ +# Purpose: load and run Rexx script via Java, allow for supplying arguments to the Rexx script +# Author: Rony G. Flatscher +# Date: 2006-01-02 +# Changed: 2007-02-03, ---rgf, renamed file, changed year-range +# 2010-06-10, ---rgf, honor environment variable 'BSF4Rexx.JavaStartupOptions', if set +# 2011-02-22, ---rgf, force 64-Bit-Java to run in 64-Bit +# Remark: Rexx script can retrieve all arguments as passed to Java via the BSFRegistry, including +# the name of the Rexx script to be invoked/dispatched +# +# Rexx: args=bsf("lookupBean", "allCommandLineArguments") +# or +# ooRexx: args=.bsf~bsf.lookupBean("allCommandLineArguments") +# +# license: +# ------------------------ Apache Version 2.0 license ------------------------- +# Copyright 2006-2011 Rony G. Flatscher +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------------- + +if [ "$BSF4Rexx_JavaStartupOptions" == "" ] +then + java -d64 org.rexxla.bsf.RexxDispatcher $* +else + echo "... using environment variable 'BSF4Rexx_JavaStartupOptions' to configure Java: [$BSF4Rexx_JavaStartupOptions]" + java -d64 $BSF4Rexx_JavaStartupOptions org.rexxla.bsf.RexxDispatcher $* +fi + Property changes on: trunk/bsf4oorexx.dev/bin/rexxj2-64.sh ___________________________________________________________________ Added: svn:executable + * Modified: trunk/bsf4oorexx.dev/bin/rexxj2.sh =================================================================== --- trunk/bsf4oorexx.dev/bin/rexxj2.sh 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/bin/rexxj2.sh 2011-04-02 17:47:55 UTC (rev 4) @@ -35,4 +35,3 @@ java $BSF4Rexx_JavaStartupOptions org.rexxla.bsf.RexxDispatcher $* fi -echo "aha $BSF4Rexx_JavaStartupOptions" Modified: trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt =================================================================== --- trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2011-04-02 17:47:55 UTC (rev 4) @@ -1,3 +1,145 @@ +-------------------------------------- 2011-02-23 ---------------------------------- +- RexxAndJava.java + + - as this class is not public, its public members cannot be accessed + by non-package code; therefore added that a new subfunction + "carryOutSystemExit": if no argument ("0"|.false or "1"|.true) is given, + then the current setting will be returned, otherwise the boolean field + will be set to the argument, which gets returned as well + +- utilities/ooRexxTry.rxj + + - renamed class "CreateSocket" to "CreateServerSocket" + - added logic to allow new ooRexxTry.rxj instances to be + created, even if the port is already taken (ask user + for another new portnumber) + - use new BSF-subfunction "carryOutSystemExit" + - use SysTempFileName() to create unique temporary filenames + +-------------------------------------- 2011-02-21 ---------------------------------- +- utilities/ooRexxTry.rxj + + - added new BSF4ooRexx program by Markus Moldaschl which implements + Lee Peedin's Windows ooRexxTry.rex in a platform independent manner, + plus a few new bells and whistles + - MacOSX: make sure to act upon the Apple application quit event + - MacOSX: adding icon image to JFrame + - make sure that a bsf.exit() is not carried out, if the RexxAndJava + version is capable of doing that + +- bin/BSF.CLS + + - define new entries in .bsf4rexx + - "OPSYS" ... operating system name from "PARSE SOURCE opsys ." plus + "OPSYS1", "OPSYS2", "OPSYS3" with the first one, two, three letters in + uppercase + - MacOSX: "APPLE_APPLICATION" the Apple application object representing + the running Rexx program + - "BSF4OOREXX_{016|032|048|064|128|256}": if defined path to PNG-icon + - "OOREXX4OOO_{016|032|048|064|128|256}": if defined path to PNG-icon + + - MacOSX: remove About and Preferences Apple menu entries + - MacOSX: define Dock icon + +- testUnits/ooRexxUnit/OOREXXUNIT.CLS + + - fixed a wrong statement in Assert::fail + +-------------------------------------- 2011-02-20 ---------------------------------- +- utilities/ooRexxTry.rxj + + - removed MacOSX-related change to name of menu "Exit" + to "Quit" as MacOSX has its own application "Quit" menu at all times + + - also using "VK_E" instead of "VK_X" for "Exit" button + +- bin/BSF.CLS + + - adding MacOSX related properties for the Rexx programs + +-------------------------------------- 2011-02-15 ---------------------------------- +- org.rexxla.bsf.RexxDispatcher.java + + - MacOSX: show Rexx' filename in Apple menu bar in the application title, + which gets set to: "BSF4ooRexx [rexx-filename]" + +-------------------------------------- 2011-02-12 ---------------------------------- +- testUnits/bsf4rexx/lex/procedural/Bean.testGroup + + - allow this test to run in "java.awt.headless=true"-mode + +- testUnits/bsf4rexx/lex/oo/Bean.testGroup + + - allow this test to run in "java.awt.headless=true"-mode + +-------------------------------------- 2011-02-10 ---------------------------------- +- testUnits/bsf4rexx/rgf/C_interfaceClasses/Test_ITest.java + + - added "bShowInfos" to control additional new debug output + +-------------------------------------- 2011-02-09 ---------------------------------- +- BSF4ooRexx.cc + + - forcing ooRexx minimum level 4.1.0 (used to be 4.0.0, which is no good as + there were needed bug fixes, which materialized in 4.0.1; as more bug fixes + were applied to the available ooRexx 4.1.0, that version is now mandated) + +- infoBSF.rxj + infoBSF-oo.rxj + + - now also querying values for "os.arch", "sun.arch.data.model" and + "java.ext.dirs" properties + +-------------------------------------- 2011-02-07 ---------------------------------- +- BSF4ooRexx.cc + + - fixing error message to reflect platforms if [lib]jvm.{dll|so|dylib} not found + +-------------------------------------- 2011-01-24 ---------------------------------- +- setupAllAndRun.rex + + - correct BSF-message popup text to not claim that no errors occurred during + install and reinstall + +- setupBSF.rex + + - escape "%" with "[25x]" in path on Windows + +- orx2reg.rex + + - cater for escaped "%" as "[25x]" on Windows + +-------------------------------------- 2011-01-24 ---------------------------------- +- RexxAndJava.java + + - added new credits to kudos + +-------------------------------------- 2011-01-12 ---------------------------------- +- BSF4ooRexx.cc + + - free VMArgs options (string and options array) + - memset malloc'ated VMArgs option memory to 0x00 + +-------------------------------------- 2011-01-09 ---------------------------------- +- BSF4ooRexx.cc + + - fixing MacOSX Java pecularity, using ["JAVA_STARTED_ON_FIRST_THREAD_%d", getpid()] + as per <http://lists.apple.com/archives/java-dev/2009/Oct/msg00511.html> + +-------------------------------------- 2011-01-08 ---------------------------------- +- org.apache.bsf.BSFManager.java + + - static constructor: fixed logic error in fallback code for getResources() + +-------------------------------------- 2011-01-02/07 ------------------------------- +- BSF4ooRexx.cc + + - fixed up code to not produce warnings on MacOSX' g++ + - code makes it possible to successfully load JVM in first thread by rexx.exe, + although only with "java.awt.headless=true" in effect; rexxj*.* works like + on any platform + - fixing MacOSX g++ warnings and errors, allow loading JVM via Rexx as well on MacOSX + -------------------------------------- 2010-12-08 ---------------------------------- - installation: Modified: trunk/bsf4oorexx.dev/changesOOo.txt =================================================================== --- trunk/bsf4oorexx.dev/changesOOo.txt 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/changesOOo.txt 2011-04-02 17:47:55 UTC (rev 4) @@ -1,3 +1,30 @@ +-------------------------------------- 2011-02-21 ---------------------------------- +- utilities/OOo/UNO_API_info/frontend_UNO_API_info.rxo + + - make sure to act upon the Apple application quit event + - adding icon image to JFrames + +- bin/UNO.CLS + + - Apple MacOSX-support added for displaying correct default icon in dock + +-------------------------------------- 2011-02-19 ---------------------------------- +- utilities/OOo/UNO_API_info/frontend_UNO_API_info.rxo + + - using Toolkit's getMenuShortcutKeyMask to define menu short-cut key + +-------------------------------------- 2011-02-17 ---------------------------------- +- ScriptProviderForooRexx.oxt + + - GUI will now be created via SwingUtilities.invokeLater(), + cf. <http://www.openoffice.org/issues/show_bug.cgi?id=92926> to + cater for MacOSX behaviour + +-------------------------------------- 2011-01-24 ---------------------------------- +- setupOOo.rex + + - escape "%" with "[25x]" in path on Windows + -------------------------------------- 2010-12-08 ---------------------------------- - installation: Modified: trunk/bsf4oorexx.dev/credits.txt =================================================================== --- trunk/bsf4oorexx.dev/credits.txt 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/credits.txt 2011-04-02 17:47:55 UTC (rev 4) @@ -26,6 +26,7 @@ Gro\xDFe-Coosmann, Florian Hahnekamp, Rainer Heinisch, Florian + Hesse, J\xFCrgen Hessling, Mark Hinz, Michael Hoisl, Bernhard @@ -39,8 +40,10 @@ Matthiesen, Faber McGuire, Rick Miesfeld, Mark + Moldaschl, Markus M\xFCller, Franz Nash, Simon + Paar, Manuel Pachl, Walter Peedin, Lee Pezerovic, Edin @@ -57,6 +60,7 @@ Sonnemans, Freddy Spanberger, David Specht, Tobias + St\xF6hr, Dennis R. Taylor, Pam Waglechner, Christoph Wiegel, Kees @@ -66,7 +70,7 @@ Rony G. Flatscher -2010-12-04, Wien/Vienna, Austria +2011-03-19, Wien/Vienna, Austria P.S.: Due to the many people who have had an influence over time I may have overlooked the one or the other while preparing this credit list. In such a Added: trunk/bsf4oorexx.dev/images/linux/hicolor/bsf4oorexx_logo_128.png =================================================================== (Binary files differ) Property changes on: trunk/bsf4oorexx.dev/images/linux/hicolor/bsf4oorexx_logo_128.png ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx4ooo_logo_128.png =================================================================== (Binary files differ) Property changes on: trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx4ooo_logo_128.png ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx_logo_128.png =================================================================== (Binary files differ) Property changes on: trunk/bsf4oorexx.dev/images/linux/hicolor/oorexx_logo_128.png ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: trunk/bsf4oorexx.dev/images/linux/hicolor/oorexxtry_128.png =================================================================== (Binary files differ) Property changes on: trunk/bsf4oorexx.dev/images/linux/hicolor/oorexxtry_128.png ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: trunk/bsf4oorexx.dev/images/linux/hicolor/oorexxtry_256.png =================================================================== (Binary files differ) Property changes on: trunk/bsf4oorexx.dev/images/linux/hicolor/oorexxtry_256.png ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: trunk/bsf4oorexx.dev/images/linux/readme.txt =================================================================== --- trunk/bsf4oorexx.dev/images/linux/readme.txt (rev 0) +++ trunk/bsf4oorexx.dev/images/linux/readme.txt 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,5 @@ +All directories here must exactly match the theme's directory names and +contain icon files in the form of "name_nnn.png" where "nnn" is the size +of the icon's side in pixels. + +rgf, 2011-03-26 Property changes on: trunk/bsf4oorexx.dev/images/linux/readme.txt ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/images/windows/oorexxtry.ico =================================================================== (Binary files differ) Property changes on: trunk/bsf4oorexx.dev/images/windows/oorexxtry.ico ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: trunk/bsf4oorexx.dev/information/2010_Netrexx_ooRexx.pdf =================================================================== (Binary files differ) Property changes on: trunk/bsf4oorexx.dev/information/2010_Netrexx_ooRexx.pdf ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Modified: trunk/bsf4oorexx.dev/install/infoBSF-oo.rxj =================================================================== --- trunk/bsf4oorexx.dev/install/infoBSF-oo.rxj 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/install/infoBSF-oo.rxj 2011-04-02 17:47:55 UTC (rev 4) @@ -2,10 +2,11 @@ /* ---rgf, 2003-03-10, 2003-03-05, 2003-04-16, 2003-04-22, 2003-08-14, 2005-12-28, 2006-01-05, 2006-08-01, 2006-12-08, 2008-07-08 2010-07-06, renamed to ".rxj" to indicate that this is a Rexx program using Java + 2011-02-09, give architecture information (bitness, arch-name), extension path(s) license: ------------------------ Apache Version 2.0 license ------------------------- - Copyright 2006-2010 Rony G. Flatscher + Copyright 2006-2011 Rony G. Flatscher Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -33,14 +34,17 @@ /* show the Java version in use for this invocation */ o=.bsf4rexx~System.class -- get the BSF reference for the Java System class say 'Java version: ' pp(o~getProperty('java.version' )) +say 'Java bitness: ' pp(o~getProperty('sun.arch.data.model' )) +say 'Java architecture: ' pp(o~getProperty('os.arch' )) say 'Java home dir: ' pp(o~getProperty('java.home' )) say say 'Java library path: ' pp(o~getProperty('java.library.path' )) say say 'Java class path: ' pp(o~getProperty('java.class.path' )) +say +say 'Java extension path:' pp(o~getProperty('java.ext.dirs' )) +say - -say text="directly by Rexx which loaded Java" if BsfInvokedBy()=1 then text="via Java" say "This Rexx script was invoked:" pp(text) Modified: trunk/bsf4oorexx.dev/install/infoBSF.rxj =================================================================== --- trunk/bsf4oorexx.dev/install/infoBSF.rxj 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/install/infoBSF.rxj 2011-04-02 17:47:55 UTC (rev 4) @@ -4,11 +4,12 @@ 2010-07-06, renamed to ".rxj" to indicate that this is a Rexx program using Java tests the BSF4Rexx installation, queries all version information; can be invoked directly or via Java, e.g. "rexxj infoBSF.rxj" + 2011-02-09, give architecture information (bitness, arch-name), extension path(s) license: ------------------------ Apache Version 2.0 license ------------------------- - Copyright 2006-2010 Rony G. Flatscher + Copyright 2006-2011 Rony G. Flatscher Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -40,12 +41,16 @@ /* show the Java version in use for this invocation */ say 'Java version: ' pp(bsf('invoke', 'System.class', 'getProperty', 'java.version' )) +say 'Java bitness: ' pp(bsf('invoke', 'System.class', 'getProperty', 'sun.arch.data.model' )) +say 'Java architecture: ' pp(bsf('invoke', 'System.class', 'getProperty', 'os.arch' )) say 'Java home dir: ' pp(bsf('invoke', 'System.class', 'getProperty', 'java.home' )) say say 'Java library path: ' pp(bsf('invoke', 'System.class', 'getProperty', 'java.library.path' )) say say 'Java class path: ' pp(bsf('invoke', 'System.class', 'getProperty', 'java.class.path' )) say +say 'Java extension path:' pp(bsf('invoke', 'System.class', 'getProperty', 'java.ext.dirs' )) +say text="directly by Rexx which loaded Java" if BsfInvokedBy()=1 then text="via Java" Modified: trunk/bsf4oorexx.dev/install/linux/resources/bsf4oorexx.desktop =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/bsf4oorexx.desktop 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/install/linux/resources/bsf4oorexx.desktop 2011-04-02 17:47:55 UTC (rev 4) @@ -2,15 +2,17 @@ Version=1.0 Type=Application Name=Rexx Script (Java) +NoDisplay=true Name[de]=Rexx Skript (Java) GenericName=RexxScriptJava Comment=RexxJavaScript (Rexx script using Java) executed by ooRexx. Comment[de]=RexxJavaScript (Rexx-Skript, das Java benutzt), ausgef\xFChrt von ooRexx. -Icon=bsf4oorexx-logo -MimeType=text/x-rexx-java; +# Icon=bsf4oorexx_logo +Icon=bsf4oorexx +MimeType=application/x-rexx-java; TryExec=/opt/BSF4ooRexx/install/runRexxScriptJava.sh Exec=/opt/BSF4ooRexx/install/runRexxScriptJava.sh %f Terminal=true Categories=Utility; -# defined for the BSF4ooRexx package, date: 2010-07-31/2010-08-20, author: Rony G. Flatscher +# defined for the BSF4ooRexx package, date: 2010-07-31 - 2011-03-26, author: Rony G. Flatscher Modified: trunk/bsf4oorexx.dev/install/linux/resources/bsf4oorexx.xml =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/bsf4oorexx.xml 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/install/linux/resources/bsf4oorexx.xml 2011-04-02 17:47:55 UTC (rev 4) @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> - <mime-type type="text/x-rexx-java"> + <mime-type type="application/x-rexx-java"> <sub-class-of type="text/plain"/> <comment>RexxJavaScript (Rexx script using Java) executed by ooRexx</comment> <glob pattern="*.jrexx"/> Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_home.desktop =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_home.desktop (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_home.desktop 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,7 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Icon=folder-remote +Exec=xdg-open http://wi.wu.ac.at/rgf/rexx/bsf4oorexx/current/ +Name=BSF4ooRexx Download Page +Comment=Opens the "BSF4ooRexx" download page on the Internet. Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_home.desktop ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_information.desktop =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_information.desktop (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_information.desktop 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,7 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Icon=folder +Exec=xdg-open /opt/BSF4ooRexx/information +Name=Information (ReleaseNotes, introductions to ooRexx, BSF4ooRexx overview) +Comment=Opens the BSF4ooRexx "information" folder. Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_information.desktop ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_menu.directory =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_menu.directory (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_menu.directory 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Icon=bsf4oorexx_logo +Name=BSF4ooRexx +Comment=The great and only BSF4ooRexx package Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_menu.directory ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_menu.menu =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_menu.menu (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_menu.menu 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,29 @@ +<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" + "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd"> + +<Menu> + <Name>Applications</Name> + <Menu> + <Name>BSF4ooRexx</Name> + <Directory>bsf4oorexx_menu.directory</Directory> + + <Menu> + <Name>Installation</Name> + <Include> + <Filename>bsf4oorexx_home.desktop</Filename> + <Filename>bsf4oorexx_setupjava.desktop</Filename> + <Filename>bsf4oorexx_reinstall.desktop</Filename> + <Filename>bsf4oorexx_uninstall.desktop</Filename> + </Include> + </Menu> + + <Include> + <Filename>bsf4oorexx_information.desktop</Filename> + <Filename>bsf4oorexx_samples.desktop</Filename> + <Filename>bsf4oorexx_utilities.desktop</Filename> + <Filename>bsf4oorexx_oorexxtry.desktop</Filename> + </Include> + </Menu> +</Menu> + +<!-- rgf, 2011-03-26 --> Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_menu.menu ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_oorexxtry.desktop =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_oorexxtry.desktop (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_oorexxtry.desktop 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +TryExec=rexx +Icon=oorexxtry +Exec=/opt/BSF4ooRexx/install/rexxj.sh /opt/BSF4ooRexx/utilities/ooRexxTry.rxj +Terminal=true +Path=/opt/BSF4ooRexx/utilities +Name=GUI Rexxtry Program +Comment=Platform independent GUI (using Java awt and swing) that allows to interactively enter and execute Rexx code. Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_oorexxtry.desktop ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_reinstall.desktop =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_reinstall.desktop (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_reinstall.desktop 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Icon=system-software-update +Exec=/opt/BSF4ooRexx/install/linux/reinstall.sh +Terminal=true +Path=/opt/BSF4ooRexx/install/linux +Name=Reinstall BSF4ooRexx +Comment=Reinstalls BSF4ooRexx. Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_reinstall.desktop ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_samples.desktop =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_samples.desktop (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_samples.desktop 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,7 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Icon=folder +Exec=xdg-open /opt/BSF4ooRexx/samples +Name=Samples (simple to comprehensive BSF4ooRexx examples) +Comment=Opens the BSF4ooRexx "samples" folder. Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_samples.desktop ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_setupjava.desktop =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_setupjava.desktop (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_setupjava.desktop 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +TryExec=rexx +Icon=system-software-update +Exec=/opt/BSF4ooRexx/install/runRexxScriptJava.sh /opt/BSF4ooRexx/install/setupJava.rex +Terminal=true +Path=/opt/BSF4ooRexx/install +Name=Configure Java to use +Comment=Allows to select which installed Java should be used. Please make sure that the Java's bitness (32-Bit or 64-Bit) matches the bitness of the installed ooRexx (run "rexx -v" to learn about the bitness of ooRexx, see the output entitled line "Addressing Mode:"). Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_setupjava.desktop ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_submenu_installation.directory =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_submenu_installation.directory (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_submenu_installation.directory 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,4 @@ +[Desktop Entry] +Type=Directory +Name=Installation +Comment=Installation submenu (re-install BSF4ooRexx, un-install BSF4ooRexx, pick Java to use, get to BSF4ooRexx homepage) Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_submenu_installation.directory ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_uninstall.desktop =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_uninstall.desktop (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_uninstall.desktop 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Icon=system-software-install +Exec=/opt/BSF4ooRexx/install/linux/uninstall.sh +Terminal=true +Path=/opt/BSF4ooRexx/install/linux +Name=Uninstall BSF4ooRexx +Comment=Uninstalls BSF4ooRexx and removes it from the system. Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_uninstall.desktop ___________________________________________________________________ Added: svn:executable + * Added: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_utilities.desktop =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_utilities.desktop (rev 0) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_utilities.desktop 2011-04-02 17:47:55 UTC (rev 4) @@ -0,0 +1,8 @@ +[Desktop Entry] +Version=1.0 +Type=Application +# Icon=folder +Icon=applications-utilities +Exec=xdg-open /opt/BSF4ooRexx/utilities +Name=Utilities (some platform-independent utility scripts) +Comment=Opens the BSF4ooRexx "utilities" folder. Property changes on: trunk/bsf4oorexx.dev/install/linux/resources/menu/bsf4oorexx_utilities.desktop ___________________________________________________________________ Added: svn:executable + * Deleted: trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_home.desktop =================================================================== --- trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_home.desktop 2011-04-02 17:20:49 UTC (rev 3) +++ trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_home.desktop 2011-04-02 17:47:55 UTC (rev 4) @@ -1,6 +0,0 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Exec=xdg-open http://wi.wu.ac.at/rgf/rexx/bsf4oorexx/current/ -Name=BSF4ooRexx Download Page -Comment=Opens the "BSF4ooRexx" download page on the Internet. Deleted: trunk/bsf4oorexx.dev/install/linux/resources/menu/rgf-bsf4oorexx_information.desktop ===========... [truncated message content] |
From: <or...@us...> - 2011-04-02 19:29:01
|
Revision: 6 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=6&view=rev Author: orexx Date: 2011-04-02 19:28:55 +0000 (Sat, 02 Apr 2011) Log Message: ----------- Add OOo-jar and oxt-extension, such that one can create the distribution package without needing to compile the appropriate files. Added Paths: ----------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt Added: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Property changes on: trunk/ScriptProviderForooRexx-source.jar ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Property changes on: trunk/ScriptProviderForooRexx.jar ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Property changes on: trunk/ScriptProviderForooRexx.oxt ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2011-04-03 19:05:24
|
Revision: 7 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=7&view=rev Author: orexx Date: 2011-04-03 19:05:17 +0000 (Sun, 03 Apr 2011) Log Message: ----------- Added a brief readme and howto. Added Paths: ----------- trunk/HOWTO.txt trunk/README.txt Added: trunk/HOWTO.txt =================================================================== --- trunk/HOWTO.txt (rev 0) +++ trunk/HOWTO.txt 2011-04-03 19:05:17 UTC (rev 7) @@ -0,0 +1,64 @@ +HOWTO compile and create a distribution + + +- Java: + + - the Java source of this package can be found in "bsf4oorexx.dev/source_java" + + - to compile + + - you need to have a JDK installed + + - make sure CLASSPATH points to trunk (such that the directories "com" and "org" can be found by Java) + + - change into "bsf4oorexx.dev" and run "cmpj.cmd" + + + + +- C++: + + - you need to have a JDK installed, let INCLUDE point to its include directories to be able to resolve "jni.h" + + - change into "bsf4oorexx/source_cc" + + - compile on your platform + + - Windows: using MS CPP, first set up the environment for a 32/64 build (cf. env4_{32|64}bit_xp.cmd) + + nmake /f Makefile{32|64} clean && nmake /f Makefile{32|64} RELEASE=1 + + - Linux: install gcc/g++ + + make -f lin_bsf4rexx-{32|64}.mak rebuild + + - MacOSX: install Xcode + + make -f apple-Makefile.mak [all \ i386 | x86_64 | ppc | universal \ clean ] + + + + +- Creating ScriptProviderForooRexx.oxt (OpenOffice.org support) + + - this is a Java-based package + + - before creating it, one needs to setup CLASSPATH to point to the OOo-jars (Java implementation of the UNO-architecture), in addition one needs to have CLASSPATH point to OOo's ScriptFramework.jar + + - run "createScriptProviderForooRexx.cmd" which will create jar-files and an "ScriptProviderForooRexx.oxt" (an OOo-extension package) file + + + +- Creating a distribution + + - change the version date in "BSF.CLS" + + - change the dates ("runDate" and "docDate") in "createDistributionForBSF4ooRexx4.cmd" + + - run "createDistributionForBSF4ooRexx4.cmd" + + +Pleae feel free to add to this document. + +2011-04-05, Rony G. Flatscher + Added: trunk/README.txt =================================================================== --- trunk/README.txt (rev 0) +++ trunk/README.txt 2011-04-03 19:05:17 UTC (rev 7) @@ -0,0 +1,32 @@ +The BSF4ooRexx project started its life in 2000/01 as a proof of concept. In 2001 the project "BSF4Rexx" was created, which indicates that the package was meant and available for all Rexx interpreters, from IBM's Object REXX to Mark Hessling's Regina. + +In the fall of 2009 a version was developed that exploits the new kernel APIs introduced with ooRexx 4.0. As a result the kernel got rewritten as well, and the project got renamed to "BSF4ooRexx". + +As the author I have been constantly under time pressure (too much work, too much ideas, ...), such that I never really cleaned the source code from outdated comments (this is especially true for bsf4oorexx.dev/source_cc/BSF4ooRexx.cc). Also the build scripts reflect the personal environment (directory structures changed over time, yet the main system to build was Windows), hence the Windows batch files. + +Here are some ideas about improving the package as it is: + +- create Unix-shell-script counterparts of the Windows batch files, such that creating the packages can be done there as well, + +- better, yet, create an Apache Maven project, cf. <http://maven.apache.org/>: + + - allows compiling, testing and packaging the jar-files easily (baseline for BSF4ooRexx is Java 1.4, i.e. anyone having Java 1.4 deployed or higher can take advantage of BSF4ooRexx, can be easily defined in the POM) + + - allows compiling also the BSF4ooRexx.cc-file (there are Maven plugins that allow for that in a platform independent manner, replacing Makefiles, if I understood that correctly!) + +- eventually remove outdated comments from all programs + +--- + +Ad possible new features: + +- whenever ooRexx-RFEs linked to BSF4ooRexx get realized by the ooRexx team, apply them in the BSF4ooRexx package (especially the feature where one could learn that the Rexx interpreter is in shutdown mode, such that no callbacks from Java to Rexx are passed on). + +- whenever ooRexx gets debug and profile APIs, make them available, such that Java based SDKs for ooRexx can be created, + +- maybe add JSR-223 support (can be implemented using a generic BSF 2.4 wrapper), if users would need it. + +Pleae feel free to add to this document. + +2011-04-05, Rony G. Flatscher + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2011-04-10 20:03:16
|
Revision: 8 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=8&view=rev Author: orexx Date: 2011-04-10 20:03:10 +0000 (Sun, 10 Apr 2011) Log Message: ----------- Add support for LibreOffice. Modified Paths: -------------- trunk/bsf4oorexx.dev/install/setupOOo.rex trunk/bsf4oorexx.dev/install/testOOo.rxo trunk/bsf4oorexx.dev/install/testOOo2.rxo trunk/com/sun/star/script/framework/provider/oorexx/template.rxo Modified: trunk/bsf4oorexx.dev/install/setupOOo.rex =================================================================== --- trunk/bsf4oorexx.dev/install/setupOOo.rex 2011-04-03 19:05:17 UTC (rev 7) +++ trunk/bsf4oorexx.dev/install/setupOOo.rex 2011-04-10 20:03:10 UTC (rev 8) @@ -3,9 +3,9 @@ Name: setupOOo.rex Purpose: create a shell script which sets the environment variable CLASSPATH to point to the Java archives needed to drive/automate OpenOffice.org - resp. StarOffice + resp. LibreOffice Author: Rony G. Flatscher - Version: 1.15 + Version: 1.16 Date: 2006-01-04 Changed: 2006-01-16, ---rgf, make sure CLASSPATH is used in any case @@ -64,6 +64,8 @@ - MacOSX: not setting up xdg-menu 2011-03-01, ---rgf, - MacOSX: adjusted 'sed' arguments 2011-03-02, ---rgf, - MacOSX: do not generate MacOSX home directory in setEnvironment4OOo.sh + 2011-04-10, ---rgf, - added support for LibreOffice (tested with LO 3.3.2) on + Windows, MacOSX (Linux-Version was generic enough already) last svn check-in: $Revision: 916 $ $Author: Administrator $ $Date: 2010-08-24 16:30:15 +0200 (Tue, 24 Aug 2010) $ @@ -124,7 +126,7 @@ end /* paths to Java and desired bin-dir given? */ -parse arg path2OOo /* get path to OpenOffice.org/StarOffice */ +parse arg path2OOo /* get path to OpenOffice.org/LibreOffice */ hive="" -- relevant for Windows registry -- say "path2OOo=["path2OOo"]" @@ -189,11 +191,11 @@ if cmd.ePath2OOoBase="" then /* not found, give a message and abort ... */ do - say "OpenOffice.org not installed?" + say "OpenOffice.org/LibreOffice not installed?" say - say "path to OpenOffice.org/StarOffice directory" pp(path2OOo) "could not be found!" + say "path to OpenOffice.org/LibreOffice directory" pp(path2OOo) "could not be found!" say - say " usage: rexx setupOOo [path-to-OpenOffice-directory]" + say " usage: rexx setupOOo [path-to-OpenOffice/LibreOffice-directory]" say if cmd.eIsUnix=0 then @@ -507,7 +509,7 @@ hintString="created:" q(date("S") time()) "by user" q(userid()) call lineout fn, cmd.eEcho qe("created:" q(date("S") time())) - call lineout fn, cmd.eEcho qe("installing BSF4ooRexx ""OpenOffice.org"" support...") + call lineout fn, cmd.eEcho qe("installing BSF4ooRexx ""OpenOffice.org/LibreOffice"" support...") call lineout fn, cmd.eEcho qe(".") call lineout fn, cmd.eEchoOff call lineout fn, "" @@ -515,14 +517,14 @@ /* uninstall: */ call lineout ui, cmd.eEcho qe("created:" q(date("S") time())) call lineout ui, cmd.eEchoOff - call lineout ui, cmd.eEcho qe("uninstalling BSF4ooRexx ""OpenOffice.org"" support...") + call lineout ui, cmd.eEcho qe("uninstalling BSF4ooRexx ""OpenOffice.org/LibreOffice"" support...") call lineout ui, cmd.eEcho qe(".") call lineout ui, "" - call lineout ui, cmd.eEcho qe("(make sure that no instances of ""OpenOffice.org"" are running!)") + call lineout ui, cmd.eEcho qe("(make sure that no instances of ""OpenOffice.org/LibreOffice"" are running!)") call lineout ui, "" -- uninstall Rexx macros, before we uninstall the rest of the pack ... ??? - call lineout ui, cmd.eEcho qe("uninstalling ooRexx OOo macros from OpenOffice/StarOffice:") + call lineout ui, cmd.eEcho qe("uninstalling ooRexx OOo macros from OpenOffice/LibreOffice:") if cmd.eIsUnix=1 then do -- tmpCmd= "." cmd.eSetEnvironment4BSFScriptName ">/dev/null;" "." cmd.eSetEnvironmentScriptName ">/dev/null;" @@ -548,7 +550,7 @@ call lineout ui, "" /* rgf, 2006-07-11: add package to OOo via Rexx and the now established OOo-support */ - call lineout ui, cmd.eEcho qe("Removing package ""ScriptProviderForooRexx.oxt"" from OpenOffice/StarOffice:") + call lineout ui, cmd.eEcho qe("Removing package ""ScriptProviderForooRexx.oxt"" from OpenOffice/LibreOffice:") if cmd.eIsUnix=1 then do -- call lineout ui, "." cmd.eSetEnvironmentScriptName ">/dev/null;rexx add_ooRexxPackage.rxo remove 2>/dev/null" @@ -678,7 +680,7 @@ call lineout fn, "" - call lineout ui, cmd.eEcho qe("removing BSF4ooRexx' OpenOffice.org entries from" tmpTgt "...") + call lineout ui, cmd.eEcho qe("removing BSF4ooRexx' OpenOffice.org/LibreOffice entries from" tmpTgt "...") call lineout ui, cmd.e_sed_delete tmpTgt call lineout ui, "" @@ -746,8 +748,8 @@ -- inform user -- call lineout fn, cmd.eEcho qc(tmpStr1) -- call lineout ui, cmd.eEcho qc(tmpStr2) - call lineout fn, cmd.eEcho qc("add OpenOffice.org-paths to environment variable 'Path' via registry ...") - call lineout ui, cmd.eEcho qc("remove OpenOffice.org-paths from environment variable 'Path' via registry ...") + call lineout fn, cmd.eEcho qc("add OpenOffice.org/LibreOffice-paths to environment variable 'Path' via registry ...") + call lineout ui, cmd.eEcho qc("remove OpenOffice.org/LibreOffice-paths from environment variable 'Path' via registry ...") -- carry out operation call lineout fn, tmpStr1 @@ -771,8 +773,8 @@ -- inform user -- call lineout fn, cmd.eEcho qc(tmpStr1) -- call lineout ui, cmd.eEcho qc(tmpStr2) - call lineout fn, cmd.eEcho qc("add OpenOffice.org-jars to environment variable 'CLASSPATH' via registry ...") - call lineout ui, cmd.eEcho qc("remove OpenOffice.org-jars from environment variable 'CLASSPATH' via registry ...") + call lineout fn, cmd.eEcho qc("add OpenOffice.org/LibreOffice-jars to environment variable 'CLASSPATH' via registry ...") + call lineout ui, cmd.eEcho qc("remove OpenOffice.org/LibreOffice-jars from environment variable 'CLASSPATH' via registry ...") -- carry out operation call lineout fn, tmpStr1 @@ -803,7 +805,7 @@ */ /* rgf, 2006-07-11: add package to OOo via Rexx and the now established OOo-support */ - call lineout fn, cmd.eEcho qe("adding package ""ScriptProviderForooRexx.oxt"" to OpenOffice/StarOffice:") + call lineout fn, cmd.eEcho qe("adding package ""ScriptProviderForooRexx.oxt"" to OpenOffice/LibreOffice:") if cmd.eIsUnix=1 then do -- call lineout fn, "." cmd.eSetEnvironmentScriptName ">/dev/null;rexx add_ooRexxPackage.rxo" @@ -833,7 +835,7 @@ call lineout fn, "" call lineout ui, "" - call lineout fn, cmd.eEcho qe("adding ooRexx OOo macros to OpenOffice/StarOffice:") + call lineout fn, cmd.eEcho qe("adding ooRexx OOo macros to OpenOffice/LibreOffice:") if cmd.eIsUnix=1 then do @@ -872,8 +874,8 @@ call lineout fn, cmd.eEcho qe(lastMessage) call lineout fn, "" - call lineout fn, cmd.eEcho qe("/// Please close ALL instances of OpenOffice/StarOffice and the quickstarter.") - call lineout fn, cmd.eEcho qe("(This will allow OpenOffice/StarOffice to fully initialize and as a result find ooRexx!)") + call lineout fn, cmd.eEcho qe("/// Please close ALL instances of OpenOffice/LibreOffice and the quickstarter.") + call lineout fn, cmd.eEcho qe("(This will allow OpenOffice/LibreOffice to fully initialize and as a result find ooRexx!)") call lineout fn, "" call lineout fn, "" @@ -952,9 +954,9 @@ call lineout fn, cmd.eLineComment "(allows running OOo scripts from the commandline)" if cmd.eIsUnix=.true then -- don't echo in Unix as this script may be executed on every new shell - call lineout fn, cmd.eLineComment "setting the CLASSPATH environment variable to point to the OpenOffice.org/StarOffice jar files" + call lineout fn, cmd.eLineComment "setting the CLASSPATH environment variable to point to the OpenOffice.org/LibreOffice jar files" else - call lineout fn, cmd.eEcho qe("setting the CLASSPATH environment variable to point to the OpenOffice.org/StarOffice jar files") + call lineout fn, cmd.eEcho qe("setting the CLASSPATH environment variable to point to the OpenOffice.org/LibreOffice jar files") -- call lineout fn, cmd.eEcho qe("(make sure that the environment is set for BSF4ooRexx as well)...") call lineout fn, "" @@ -1054,7 +1056,7 @@ say say "the following scripts have been created:" say - say " " pp(cmd.eInstallScriptName)": run to install ooRexx-UNO support for OpenOffice" + say " " pp(cmd.eInstallScriptName)": run to install ooRexx-UNO support for OpenOffice/LibreOffice" /* if cmd.eIsUnix=0 then say " usage:" cmd.eInstallScriptName @@ -1069,7 +1071,7 @@ say say - say " " pp(cmd.eUninstallScriptName)": run to uninstall ooRexx-UNO support for OpenOffice" + say " " pp(cmd.eUninstallScriptName)": run to uninstall ooRexx-UNO support for OpenOffice/LibreOffice" /* if cmd.eIsUnix=0 then say " usage:" cmd.eUninstallScriptName @@ -1085,7 +1087,7 @@ -- say " " pp(cmd.eSetEnvironmentScriptName)": helper script for setting up the environment" say " " pp(filespec("Name",cmd.eSetEnvironmentScriptName))": helper script for setting up the environment" - say " for running OpenOffice.org (OOo)/StarOffice (SO) ooRexx programs" + say " for running OpenOffice.org (OOo)/LibreOffice (LO) ooRexx programs" say /* if cmd.eIsUnix=0 then @@ -1215,6 +1217,27 @@ to OOo's program directory */ ::routine getOOoHomeDirWindows + regpaths=.array~of("Software\OpenOffice.org\UNO\InstallPath\", "Software\LibreOffice\UNO\InstallPath\") + wsh=.OleObject~new("WScript.Shell") + + do key over regpaths + do hive over .array~of("HKCU", "HKLM") -- current user/local machine + val=readOOoRegEntry(wsh, hive, key) -- try to fetch a value + if val<>"" then return val + end + end + return "" -- no entry for OOo/SO/LO found ! + +::routine readOOoRegEntry -- read key from hive, return hive and value back + use arg wsh, hive, key + signal on syntax + return hive wsh~regRead(hive"\"key) -- gets triggered, if key does not exist in registry +syntax: + return "" + + + +::routine getOOoHomeDirWindows_Original key="Software\OpenOffice.org\UNO\InstallPath\" wsh=.OleObject~new("WScript.Shell") @@ -1229,6 +1252,7 @@ return "" + /* Look for "soffice" on environment variable PATH. If a link, find link's target. */ ::routine getOOoHomeDirUnix @@ -1268,16 +1292,20 @@ return "" -- not found -/* rgf, 2011-02-25, try to find OOo's home dir on MacOSX */ +/* rgf, 2011-02-25, try to find OOo's home dir on MacOSX, 2011-04-10: add search for LibreOffice */ ::routine getOOoHomeDirMacOSX - path="/Applications/OpenOffice.org.app/Contents/MacOS" -- well defined home directory - soffice=path"/soffice" - if SysFileExists(soffice) then return path +-- well defined home directory + paths=.array~of("/Applications/OpenOffice.org.app/Contents/MacOS", "/Applications/LibreOffice.app/Contents/MacOS") + + do path over paths + soffice=path"/soffice" + if SysFileExists(soffice) then return path + end + return "" -- not found (not installed) - -- queries needed OOo configuration using "unoinfo" (available starting with OOo 3.x) ::routine getClassPath4OOo parse arg path2unoinfo Modified: trunk/bsf4oorexx.dev/install/testOOo.rxo =================================================================== --- trunk/bsf4oorexx.dev/install/testOOo.rxo 2011-04-03 19:05:17 UTC (rev 7) +++ trunk/bsf4oorexx.dev/install/testOOo.rxo 2011-04-10 20:03:10 UTC (rev 8) @@ -1,11 +1,12 @@ #!/usr/bin/rexx /* Name: testOOo.rex - Purpose: test whether OpenOffice.org/StarOffice can be automated via ooRexx + Purpose: test whether OpenOffice.org/LibreOffice can be automated via ooRexx Author: Rony G. Flatscher Date: 2006-01-01 Changed: 2010-07-06, ---rgf, renamed to ".rxo" to indicate that this is a Rexx program using OpenOffice via Java + 2011-04-10, ---rgf, adding hint about LibreOffice Needs: UNO.CLS (Universal Network Objects support, component technology on which OOo/SO are built) @@ -19,7 +20,7 @@ license: ------------------------ Apache Version 2.0 license ------------------------- - Copyright 2006-2010 Rony G. Flatscher + Copyright 2006-2011 Rony G. Flatscher Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -35,10 +36,9 @@ ----------------------------------------------------------------------------- */ -say "testOOo.rex: started to run; please be patient on the very first invocation" -say " as creating the full Java support for OpenOffice.org (OOo) or" -say " StarOffice (SO) takes a while initially." +say "testOOo.rex: started to run ..." say + /* create a desktop object, request the XDesktop interface from it and request the XComponentLoader interface from that */ say "... getting at a componentLoader ..." @@ -56,7 +56,7 @@ /* set the text of the text object to salute the world of ooRexx */ say "... setting the text object ..." -text~setString("Hello OpenOffice.org/StarOffice, this is ooRexx speaking! ("date("S") time()")") +text~setString("Hello OpenOffice.org/LibreOffice, this is ooRexx speaking! ("date("S") time()")") say say "done." Modified: trunk/bsf4oorexx.dev/install/testOOo2.rxo =================================================================== --- trunk/bsf4oorexx.dev/install/testOOo2.rxo 2011-04-03 19:05:17 UTC (rev 7) +++ trunk/bsf4oorexx.dev/install/testOOo2.rxo 2011-04-10 20:03:10 UTC (rev 8) @@ -1,13 +1,14 @@ #!/usr/bin/rexx /* Name: testOOo2.rex - Purpose: test whether OpenOffice.org/StarOffice can be automated via ooRexx, + Purpose: test whether OpenOffice.org/LibreOffice can be automated via ooRexx, demonstrate some of the reflection methods for finding out informaton about UNO_PROXY objects at runtime Author: Rony G. Flatscher Date: 2006-01-03 Needs: UNO.CLS (Universal Network Objects support, component technology on which OOo/SO are built) + 2011-04-10, ---rgf, adding hint about LibreOffice Remarks: For further information on programming OOo/SO and getting at ooRexx nutshell examples that jump-start you please refer to @@ -19,7 +20,7 @@ license: ------------------------ Apache Version 2.0 license ------------------------- - Copyright 2006-2010 Rony G. Flatscher + Copyright 2006-2011 Rony G. Flatscher Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -35,11 +36,9 @@ ----------------------------------------------------------------------------- */ - -say "testOOo.rex: started to run; please be patient on the very first invocation" -say " as creating the full Java support for OpenOffice.org (OOo) or" -say " StarOffice (SO) takes a while initially." +say "testOOo.rex: started to run ..." say + /* create a desktop object, request the XDesktop interface from it and request the XComponentLoader interface from that */ say "... getting at a componentLoader ..." @@ -74,7 +73,7 @@ say " text~uno.getDefinition="ppd(text~uno.getDefinition) say "---" say " text~uno.getProperties="ppd(text~uno.getProperties) -text~setString("Hello OpenOffice.org/StarOffice, this is ooRexx speaking! ("date("S") time()")") +text~setString("Hello OpenOffice.org/LibreOffice, this is ooRexx speaking! ("date("S") time()")") call eyeCatcher say Modified: trunk/com/sun/star/script/framework/provider/oorexx/template.rxo =================================================================== --- trunk/com/sun/star/script/framework/provider/oorexx/template.rxo 2011-04-03 19:05:17 UTC (rev 7) +++ trunk/com/sun/star/script/framework/provider/oorexx/template.rxo 2011-04-10 20:03:10 UTC (rev 8) @@ -1,4 +1,4 @@ -/* ooRexx (http://www.ooRexx.org) template, version: 2010-07-27, Rony G. Flatscher */ +/* ooRexx (http://www.ooRexx.org) template, version: 2011-04-10, Rony G. Flatscher */ /* The following ooRexx code realizes an OOo macro that can be run against each OOo document type. It demonstrates how to get the document object and determine @@ -131,7 +131,7 @@ .bsf.dialog~messageBox(tmpStr, "Runtime error #" co~code, "error") -- display the string -::requires UNO.CLS /* load UNO support (OpenOffice/StarOffice) for ooRexx */ +::requires UNO.CLS /* load UNO support (OpenOffice/LibreOffice) for ooRexx */ /* OOo >= 3.0: get the invocation context (a XScriptInvocationContext) object; if not .nil, then use this document instead of the result of scriptContext~getDocument! */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2012-02-19 19:21:15
|
Revision: 58 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=58&view=rev Author: orexx Date: 2012-02-19 19:21:08 +0000 (Sun, 19 Feb 2012) Log Message: ----------- 2012-02-19 RXHLT implemented Modified Paths: -------------- trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc trunk/bsf4oorexx.dev/source_cc/org_rexxla_bsf_engines_rexx_RexxAndJava.h trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.java trunk/bsf4oorexx.dev/source_java/RexxHandler.java trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava.h trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java trunk/org/rexxla/bsf/engines/rexx/RexxHandler.class trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java Modified: trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc =================================================================== --- trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc 2012-02-19 14:02:31 UTC (rev 57) +++ trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc 2012-02-19 19:21:08 UTC (rev 58) @@ -29,10 +29,16 @@ * * last change: $Revision: 888 $ $Author: Administrator $ $Date: 2010-08-16 16:02:21 +0200 (Mon, 16. Aug 2010) $ + 4.1.-10 2012-02-19 - added native function _jniGetCallerContext() + + - RgfCreateRexxlikeErrorInfo(): set informative Java message, if no traceback line + available (because a result of a Java call into Rexx) + 4.1.-9 2012-02-18 - added inline function RgfRexxObject2JavaObject() to have a single spot where the basic conversion occurs (became necessary because of new execution paths causing "copy-duplication" of code) - renamed RgfProcessJArg1() to RgfJavaObject2RexxObject() + 4.1.-8 2012-02-17 - adapted to exploit command and exit handlers that implement the *interfaces* RexxExitHandler.java and RexxCommandHandler.java (they used to be defined in an abstract fashion); much easier to implement for the Java programmers, @@ -504,6 +510,10 @@ // #define DEBUG_RGF_PROCESS_J_ARG1 // rgf, 2012-02-07; renamed to RgfJavaObject2RexxObject, 2012-02-18 // #define DEBUG_RGF_PROCESS_J_ARGS +// #define DEBUG_REXX_OBJECT_TO_JAVA // rgf, 2012-02-19 + + + #if defined (UNIX) && defined (NIXI_NOXI) // comment before && to activate all of the flags below #define DEBUG #define DEBUG1 @@ -721,11 +731,11 @@ #if defined (BSF4REXX_32_BIT) - #define BSF_VERSION "410.20120218 org/rexxla/bsf/engines/rexx 32-bit" // version: "MajorNumber"."YYYYMMDD" + #define BSF_VERSION "410.20120219 org/rexxla/bsf/engines/rexx 32-bit" // version: "MajorNumber"."YYYYMMDD" #elif defined (BSF4REXX_64_BIT) - #define BSF_VERSION "410.20120218 org/rexxla/bsf/engines/rexx 64-bit" // version: "MajorNumber"."YYYYMMDD" + #define BSF_VERSION "410.20120219 org/rexxla/bsf/engines/rexx 64-bit" // version: "MajorNumber"."YYYYMMDD" #else - #define BSF_VERSION "410.20120218 org/rexxla/bsf/engines/rexx n/a-bit" // version: "MajorNumber"."YYYYMMDD" + #define BSF_VERSION "410.20120219 org/rexxla/bsf/engines/rexx n/a-bit" // version: "MajorNumber"."YYYYMMDD" #endif #define JAVA_4_REXX "org/rexxla/bsf/engines/rexx/Java4Rexx" // 2005-06-02, supportive Java4Rexx-class @@ -2623,10 +2633,13 @@ #if defined(DEBUG40) fprintf(stderr, "\t-->\tRgfCreateRexxException4Java() - create RexxException ...\n"); - fprintf(stderr, "\t-->\tRgfCreateRexxException4Java() - \tclz=[%p], mid=[%p], reason=[%d], message=[%.256s], jConditionObject=[%p]\n", + fprintf(stderr, "\t-->\tRgfCreateRexxException4Java() - \tclz=[%p], mid=[%p], reason=[%d], message=[%.256s], jConditionObject=[%p].\n", defaultJVM->clz_RexxException, defaultJVM->mid_RexxException_init, reason, message, jConditionObject); // clz, mid, reason, message, jConditionObject); + fprintf(stderr, "\t-->\tRgfCreateRexxException4Java() - \tmessage=<<<[%.256s]>>>\n",message); + + fflush(stderr); #endif // public RexxException (int reason, String message, RexxProxy rexxCondition) @@ -2639,7 +2652,8 @@ ); #if defined(DEBUG40) - fprintf(stderr, "\t-->\tRgfCreateRexxException4Java() - end ...\n"); + fprintf(stderr, "\t-->\tRgfCreateRexxException4Java() - end ...\n<-------\n"); + fflush(stderr); #endif return thr; // return throwable } @@ -3405,7 +3419,15 @@ // format message according to exception type if (rtc->SendMessage1(cond.conditionName, "EQUALS", rtc->String("SYNTAX"))==rtc->True()) // SYNTAX condition ? { - char const *line1=rtc->CString(rtc->SendMessage0(rtc->DirectoryAt(condObj, "TRACEBACK"), "FIRSTITEM")) ; // first traceback line=error line + RexxObjectPtr tbRop=rtc->SendMessage0(rtc->DirectoryAt(condObj, "TRACEBACK"), "FIRSTITEM"); // first traceback line=error line + const char *line1="Rexx traceback line not available from the Rexx condition object (Rexx condition may have been caused by a call or message from Java to Rexx)"; + + if (tbRop!=rtc->Nil()) // a traceback entry available + { + line1=(const char *) rtc->CString(tbRop) ; // first traceback line=error line + } + + // char const *line1=rtc->CString(rtc->SendMessage0(rtc->DirectoryAt(condObj, "TRACEBACK"), "FIRSTITEM")) ; // first traceback line=error line // line1=rtc->CString(rtc->SendMessage0(rtc->DirectoryAt(condObj, "TRACEBACK"), "FIRSTITEM")) ; // first traceback line=error line char line2[2048]=""; // will only use 1024 of it @@ -3423,7 +3445,6 @@ // sprintf(msg, "%.16s%.512s:\n%.1024s\n%.1024s\n%.1024s", DLLNAME, header, line1, line2, line3); SNPRINTF( msg, 4096, "%.16s%.512s:\n%.1024s\n%.1024s\n%.1024s", DLLNAME, header, line1, line2, line3); - } else { @@ -7090,22 +7111,23 @@ jobject jresult=NULL; // default for -1, -2 - if (typeIndicator>=0) // a RexxString, BSF/UNO_Proxy or any other RexxObject - { - -#if defined (DEBUG_REXX_PROXY_BSF) +#if defined (DEBUG_REXX_PROXY_BSF) || defined (DEBUG_REXX_OBJECT_TO_JAVA) RexxStringObject strTmpObj= RgfDebug_GetMaxStringValue(context, tmpObj, 90) ; - fprintf(stderr, "... RgfRexxObject2JavaObject():b: typeIndicator=[%c], arg[%lu]=[%.256s]\n", typeIndicator, (unsigned long) i, context->CString(strTmpObj) ); + fprintf(stderr, "... RgfRexxObject2JavaObject():b: typeIndicator=[%d], maxStringValue=[%.256s]\n", typeIndicator, (unsigned long) context->CString(strTmpObj) ); // fprintf(stderr, "... BSF(): arg[%u]=[%.256s]\n", i, context->CString(context->SendMessage0(tmpObj, "STRING"))); #endif + + if (typeIndicator>=0) // a RexxString, BSF/UNO_Proxy or any other RexxObject + { + if (typeIndicator==1) // a .STRING { -#if defined (DEBUG_REXX_PROXY_BSF) +#if defined (DEBUG_REXX_PROXY_BSF) || defined (DEBUG_REXX_OBJECT_TO_JAVA) // fprintf(stderr, "-> BSF(): \targ[%u] STRING val=[%.256s]\n",i, context->CString(context->ObjectToString(tmpObj))); fflush(stderr); - fprintf(stderr, "-> RgfRexxObject2JavaObject():c: \targ[%lu] STRING val=[%.256s]\n",(unsigned long) i, + fprintf(stderr, "-> RgfRexxObject2JavaObject():c: \tSTRING val=[%.256s]\n", context->CString(RgfDebug_GetMaxStringValue(context, tmpObj, 180))); fflush(stderr); #endif @@ -7124,8 +7146,8 @@ // ) if (typeIndicator>1) // a BSF/UNO_PROXY object in hand, Java object resides in BSF registry { -#if defined (DEBUG_REXX_PROXY_BSF) - fprintf(stderr, "-> RgfRexxObject2JavaObject():d: \targ[%lu] BSF/UNO_PROXY val=[%.256s]\n",(unsigned long) i, context->CString(RgfDebug_GetMaxStringValue(context, tmpObj, 90)) ); fflush(stderr); +#if defined (DEBUG_REXX_PROXY_BSF) || defined (DEBUG_REXX_OBJECT_TO_JAVA) + fprintf(stderr, "-> RgfRexxObject2JavaObject():d: \tBSF/UNO_PROXY val=[%.256s]\n",context->CString(RgfDebug_GetMaxStringValue(context, tmpObj, 90)) ); fflush(stderr); #endif // lookup the Java object from the BSF registry and return that Java object, i.e. // get bean from the Java side -------------------------------------------------- @@ -7139,21 +7161,24 @@ else // any other Rexx object, wrap it up as a (Java) RexxProxy { -#if defined (DEBUG_REXX_PROXY_BSF) +#if defined (DEBUG_REXX_PROXY_BSF) || defined (DEBUG_REXX_OBJECT_TO_JAVA) char *tmpStrObject=(char *) context->CString(context->ObjectToString(tmpObj)); - fprintf(stderr, "-> RgfRexxObject2JavaObject(): debug! \targ[%lu] is a non-String, non-BSF/UNO RexxObject, type=[%.256s]: creating a RexxProxy for it!\n\t~string=[%.256s]", - (unsigned long) i, + fprintf(stderr, "-> RgfRexxObject2JavaObject(): debug! \tis a non-String, non-BSF/UNO RexxObject, type=[%.256s]: creating a RexxProxy for it!\n\t~string=[%.256s]\n", context->CString(context->ObjectToString(context->SendMessage0(tmpObj,"CLASS"))), tmpStrObject); fflush(stderr); #endif // create RexxProxy for it - jobject jresult=RgfCreateRexxProxy (param->env, param->rajo, - context, // ThreadContext, RMG: 20090514 - tmpObj, // Rexx object - NULL, // Package object - NULL // userData (slot) - ); + jresult=RgfCreateRexxProxy (param->env, param->rajo, + context, // ThreadContext, RMG: 20090514 + tmpObj, // Rexx object + NULL, // Package object + NULL // userData (slot) + ); + +#if defined (DEBUG_REXX_PROXY_BSF) || defined (DEBUG_REXX_OBJECT_TO_JAVA) + fprintf(stderr, "-> RgfRexxObject2JavaObject(): AFTER creating RexxProxy jresult=[%p]\n",jresult);fflush(stderr); +#endif } } } @@ -14623,7 +14648,7 @@ RexxDirectoryObject condObj=rtc->GetConditionInfo(); - char * msg=RgfCreateRexxlikeErrorInfo (rtc, condObj, "/routine/jniRexxSendMessageToRexxObject(), error 3"); + char * msg=RgfCreateRexxlikeErrorInfo (rtc, condObj, "/routine/jniRexxSendMessageToRexxObject(), error 4"); jthrowable rexxException=RgfCreateRexxException4Java(env, jobj, rtc, // rtc, @@ -15477,6 +15502,39 @@ // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + case RXHLT: // system exit # 7, "HALT condition processing" + { +#if defined ( RGF_INFO ) || defined ( RGF_SYSTEM_EXIT_HANDLER ) + RXFNCCAL_PARM *pb =(RXFNCCAL_PARM *) parmBlock; + fprintf(stderr, "---> RXHLT=7: [%d], subfunction: [%d]\n", exitNumber, subfunction); +#endif + + if (subfunction==RXHLTTST || // 2 + subfunction==RXHLTCLR) // 1 - TODO: does this have a parmBlock ?? + { + RXHLTTST_PARM *pb=(RXHLTTST_PARM *) parmBlock; + jpb = param.env->NewObjectArray ( + (jsize) 2, // needed size (number of elements) + defaultJVM->clz_Object, // type + NULL // initial value + ); + + // process flag for Java + jbooleanArray jflags= param.env->NewBooleanArray((jsize) 1); // needed size (number of elements) + jboolean * tmpFlags=param.env->GetBooleanArrayElements(jflags,NULL); + tmpFlags[0]=pb->rxhlt_flags.rxfhhalt; + param.env->ReleaseBooleanArrayElements(jflags, tmpFlags, NULL); // do not copy elements back to Java + param.env->SetObjectArrayElement(jpb, (jint) 0, jflags); + + // index [1]: may be freely used by Java (a slot that gets ignored here) + } + } + break; + + + + + // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> // nothing to setup, so just break case RXINI: // system exit # 9, "initialization processing" #if defined ( RGF_INFO ) || defined ( RGF_SYSTEM_EXIT_HANDLER ) @@ -15941,7 +15999,33 @@ break; + // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + case RXHLT: // system exit # 7, "HALT condition processing" + { + #if defined ( RGF_INFO ) || defined ( RGF_SYSTEM_EXIT_HANDLER ) + RXFNCCAL_PARM *pb =(RXFNCCAL_PARM *) parmBlock; + fprintf(stderr, "<--- RXHLT=7: [%d], subfunction: [%d]\n", exitNumber, subfunction); + #endif + if (subfunction==RXHLTTST || // 2 + subfunction==RXHLTCLR) // 1 - TODO: does this have a parmBlock ?? + { + RXHLTTST_PARM *pb=(RXHLTTST_PARM *) parmBlock; + + // get flags from Java and assign their values to Rexx + jbooleanArray jflags= (jbooleanArray) param.env->GetObjectArrayElement(jpb, (jint) 0); + jboolean * tmpFlags=param.env->GetBooleanArrayElements(jflags,NULL); + pb->rxhlt_flags.rxfhhalt =tmpFlags[0]; + + +// fprintf(stderr, "<--- RXHLT=7: [%d], subfunction: [%d], pb->rxhlt_flags.rxfhhalt=[%d]\n",exitNumber, subfunction, pb->rxhlt_flags.rxfhhalt);fflush(stderr); + + param.env->ReleaseBooleanArrayElements(jflags, tmpFlags, NULL); // do not copy elements back to Java + } + } + break; + + // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #if defined ( RGF_INFO ) || defined ( RGF_SYSTEM_EXIT_HANDLER ) @@ -16448,6 +16532,7 @@ // get RexxExitContext from opaque slot argument RexxExitContext *context=(RexxExitContext *) rgfUnwrapPointer(env, (jstring) env->GetObjectArrayElement(j_slot, (jint) 2)); + // get condition name in Rexx RexxStringObject rsoConditionName= (j_conditionName==NULL ? NULL : (RexxStringObject) JNU_GetStringNativeCharsReturningRexxObjectPtr(env, j_conditionName, context->threadContext) @@ -16940,9 +17025,70 @@ } +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniGetCallerContext + * Signature: ([Ljava/lang/Object;)Ljava/lang/Object; + + */ + +JNIEXPORT jobject JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetCallerContext + + (JNIEnv *env, jobject rajo, jobjectArray j_slot) +{ +#if defined (DEBUG_JNI) + fprintf(stderr, "==> ==> 1/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetCallerContext <== <==\n");fflush(stderr); +#endif + + // get RexxExitContext from opaque slot argument + RexxExitContext *context=(RexxExitContext *) rgfUnwrapPointer(env, (jstring) env->GetObjectArrayElement(j_slot, (jint) 2)); + RexxObjectPtr rop=context->GetCallerContext(); + + STRUCT_PARAM param={0, env, rajo, 0, 0, 0, 0, 0}; + jobject jobj=RgfRexxObject2JavaObject(¶m,context->threadContext,rop); + +#if defined (DEBUG_JNI) + fprintf(stderr, "==> ==> 2/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetCallerContext <== <==\n");fflush(stderr); +#endif + return jobj; +} + + +/* + + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + + * Method: jniGetAllContextVariables + + * Signature: ([Ljava/lang/Object;)Ljava/lang/Object; + + */ + +JNIEXPORT jobject JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetAllContextVariables + + (JNIEnv *env, jobject rajo, jobjectArray j_slot) +{ +#if defined (DEBUG_JNI) + fprintf(stderr, "==> ==> 1/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetAllContextVariables <== <==\n");fflush(stderr); +#endif + + // get RexxExitContext from opaque slot argument + RexxExitContext *context=(RexxExitContext *) rgfUnwrapPointer(env, (jstring) env->GetObjectArrayElement(j_slot, (jint) 2)); + RexxObjectPtr rop=context->GetAllContextVariables(); + + STRUCT_PARAM param={0, env, rajo, 0, 0, 0, 0, 0}; + jobject jobj=RgfRexxObject2JavaObject(¶m,context->threadContext,rop); + +#if defined (DEBUG_JNI) + fprintf(stderr, "==> ==> 2/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetAllContextVariables <== <==\n");fflush(stderr); +#endif + return jobj; +} + + Modified: trunk/bsf4oorexx.dev/source_cc/org_rexxla_bsf_engines_rexx_RexxAndJava.h =================================================================== --- trunk/bsf4oorexx.dev/source_cc/org_rexxla_bsf_engines_rexx_RexxAndJava.h 2012-02-19 14:02:31 UTC (rev 57) +++ trunk/bsf4oorexx.dev/source_cc/org_rexxla_bsf_engines_rexx_RexxAndJava.h 2012-02-19 19:21:08 UTC (rev 58) @@ -321,6 +321,22 @@ /* * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniGetCallerContext + * Signature: ([Ljava/lang/Object;)Ljava/lang/Object; + */ +JNIEXPORT jobject JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetCallerContext + (JNIEnv *, jobject, jobjectArray); + +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniGetAllContextVariables + * Signature: ([Ljava/lang/Object;)Ljava/lang/Object; + */ +JNIEXPORT jobject JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetAllContextVariables + (JNIEnv *, jobject, jobjectArray); + +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava * Method: jniInitialize4Rexx * Signature: ()I */ Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2012-02-19 14:02:31 UTC (rev 57) +++ trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2012-02-19 19:21:08 UTC (rev 58) @@ -36,11 +36,13 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 4.1.0, 2012-02-06 + * @version 4.1.0, 2012-02-19 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) */ /* + 2012-02-19, ---rgf, - added method jniGetCallerContext(), jniGetAllContextVariables + 2012-02-11, ---rgf, - added methods: jniCheckCondition(), jniClearCondition(), jniGetConditionInfo(), jniSetThread(), jniSetThreadTrace(), jniHaltThread() @@ -257,7 +259,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "410.20120212"; + static final public String version = "410.20120219"; static final private String pkgName = "org.rexxla.bsf.engines.rexx"; @@ -784,8 +786,12 @@ // rgf, 2012-02-18 protected native void jniSetContextVariableToNil(Object[] slot, String variableName); + // rgf, 2012-02-19 + protected native Object jniGetCallerContext(Object[] slot); + protected native Object jniGetAllContextVariables(Object[] slot); + /** rgf, 2003-01-15, used for allowing the BSF4ooRexx-DLL to get at *env, *obj and then to mid etc. * */ protected native int jniInitialize4Rexx() ; Modified: trunk/bsf4oorexx.dev/source_java/RexxHandler.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxHandler.java 2012-02-19 14:02:31 UTC (rev 57) +++ trunk/bsf4oorexx.dev/source_java/RexxHandler.java 2012-02-19 19:21:08 UTC (rev 58) @@ -3,6 +3,17 @@ Interface class to allow typing Rexx handlers implemented in Java. + <p><em>Please note:</em> these methods allow interfacing with the running instance + of the Rexx interpreter instance on the <em>same (!) thread</em> in which the Rexx command + or Rexx exit Java handler got invoked. + It is necessary to supply the opaque argument named <em>slot</em> from the Java handler + methods <em>unaltered</em>. + <br> + If neither of these two restrictions holds, then the results of executing any of these + static methods will be undefined, mostlikely tearing down ooRexx and Java! + + <p> + * <pre>------------------------ Apache Version 2.0 license ------------------------- * Copyright (C) 2012 Rony G. Flatscher * @@ -22,13 +33,13 @@ * * @author Rony G. Flatscher * @version 1.0 - * @since 2012-02-18 + * @since 2012-02-19 */ public abstract class RexxHandler { /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - final static public String version = "1.20120217"; + final static public String version = "1.20120219"; /** Raises a condition in the current Rexx thread, pass-through method to the Rexx API, which @@ -112,6 +123,20 @@ ((RexxAndJava) arrSlot[0]).jniRaiseException2(arrSlot, definedErrorNumber, substitution1, substitution2); } + + + /** Fetches and returns a Rexx directory containing all context variables. + * + * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object + * @return a @{link RexxProxy} representing a Rexx directory with the currently defined context variables + */ + public static Object getAllContextVariables(Object slot) + { + Object [] arrSlot=(Object[]) slot; + return ((RexxAndJava) arrSlot[0]).jniGetAllContextVariables(arrSlot); + } + + /** Fetches and returns the Rexx variable value in the Rexx program for which the handler runs. * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object @@ -198,6 +223,19 @@ } + /** Returns the Rexx context object that can be analyzed to learn about the context + * of the command/exit. + * + * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object + * @return returns a {@link RexxProxy} for the Rexx <code>.context</code> object + */ + public static Object getCallerContext(Object slot) + { + Object [] arrSlot=(Object[]) slot; + return ((RexxAndJava) arrSlot[0]).jniGetCallerContext(arrSlot); + } + + /** Sets the interactive trace state for the current thread. * * @param state new state for interactive trace Modified: trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava.h =================================================================== --- trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava.h 2012-02-19 14:02:31 UTC (rev 57) +++ trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava.h 2012-02-19 19:21:08 UTC (rev 58) @@ -321,6 +321,22 @@ /* * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniGetCallerContext + * Signature: ([Ljava/lang/Object;)Ljava/lang/Object; + */ +JNIEXPORT jobject JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetCallerContext + (JNIEnv *, jobject, jobjectArray); + +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniGetAllContextVariables + * Signature: ([Ljava/lang/Object;)Ljava/lang/Object; + */ +JNIEXPORT jobject JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetAllContextVariables + (JNIEnv *, jobject, jobjectArray); + +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava * Method: jniInitialize4Rexx * Signature: ()I */ Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-02-19 14:02:31 UTC (rev 57) +++ trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-02-19 19:21:08 UTC (rev 58) @@ -36,11 +36,13 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 4.1.0, 2012-02-06 + * @version 4.1.0, 2012-02-19 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) */ /* + 2012-02-19, ---rgf, - added method jniGetCallerContext(), jniGetAllContextVariables + 2012-02-11, ---rgf, - added methods: jniCheckCondition(), jniClearCondition(), jniGetConditionInfo(), jniSetThread(), jniSetThreadTrace(), jniHaltThread() @@ -257,7 +259,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "410.20120212"; + static final public String version = "410.20120219"; static final private String pkgName = "org.rexxla.bsf.engines.rexx"; @@ -784,8 +786,12 @@ // rgf, 2012-02-18 protected native void jniSetContextVariableToNil(Object[] slot, String variableName); + // rgf, 2012-02-19 + protected native Object jniGetCallerContext(Object[] slot); + protected native Object jniGetAllContextVariables(Object[] slot); + /** rgf, 2003-01-15, used for allowing the BSF4ooRexx-DLL to get at *env, *obj and then to mid etc. * */ protected native int jniInitialize4Rexx() ; Modified: trunk/org/rexxla/bsf/engines/rexx/RexxHandler.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java 2012-02-19 14:02:31 UTC (rev 57) +++ trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java 2012-02-19 19:21:08 UTC (rev 58) @@ -3,6 +3,17 @@ Interface class to allow typing Rexx handlers implemented in Java. + <p><em>Please note:</em> these methods allow interfacing with the running instance + of the Rexx interpreter instance on the <em>same (!) thread</em> in which the Rexx command + or Rexx exit Java handler got invoked. + It is necessary to supply the opaque argument named <em>slot</em> from the Java handler + methods <em>unaltered</em>. + <br> + If neither of these two restrictions holds, then the results of executing any of these + static methods will be undefined, mostlikely tearing down ooRexx and Java! + + <p> + * <pre>------------------------ Apache Version 2.0 license ------------------------- * Copyright (C) 2012 Rony G. Flatscher * @@ -22,13 +33,13 @@ * * @author Rony G. Flatscher * @version 1.0 - * @since 2012-02-18 + * @since 2012-02-19 */ public abstract class RexxHandler { /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - final static public String version = "1.20120217"; + final static public String version = "1.20120219"; /** Raises a condition in the current Rexx thread, pass-through method to the Rexx API, which @@ -112,6 +123,20 @@ ((RexxAndJava) arrSlot[0]).jniRaiseException2(arrSlot, definedErrorNumber, substitution1, substitution2); } + + + /** Fetches and returns a Rexx directory containing all context variables. + * + * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object + * @return a @{link RexxProxy} representing a Rexx directory with the currently defined context variables + */ + public static Object getAllContextVariables(Object slot) + { + Object [] arrSlot=(Object[]) slot; + return ((RexxAndJava) arrSlot[0]).jniGetAllContextVariables(arrSlot); + } + + /** Fetches and returns the Rexx variable value in the Rexx program for which the handler runs. * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object @@ -198,6 +223,19 @@ } + /** Returns the Rexx context object that can be analyzed to learn about the context + * of the command/exit. + * + * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object + * @return returns a {@link RexxProxy} for the Rexx <code>.context</code> object + */ + public static Object getCallerContext(Object slot) + { + Object [] arrSlot=(Object[]) slot; + return ((RexxAndJava) arrSlot[0]).jniGetCallerContext(arrSlot); + } + + /** Sets the interactive trace state for the current thread. * * @param state new state for interactive trace This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2012-02-23 18:57:12
|
Revision: 62 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=62&view=rev Author: orexx Date: 2012-02-23 18:57:00 +0000 (Thu, 23 Feb 2012) Log Message: ----------- 20120223 Fix javadoc warnings Modified Paths: -------------- trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool$RunInfos.class trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool.class trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool.java trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.java trunk/bsf4oorexx.dev/source_java/RexxConfiguration.java trunk/bsf4oorexx.dev/source_java/RexxEngine.java trunk/bsf4oorexx.dev/source_java/RexxHandler.java trunk/bsf4oorexx.dev/source_java/RexxProxy.java trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java trunk/make-docs-apache.cmd trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool$RunInfos.class trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.class trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.java trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java trunk/org/rexxla/bsf/engines/rexx/RexxProxy.java Modified: trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool$RunInfos.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool.java 2012-02-23 18:57:00 UTC (rev 62) @@ -35,7 +35,7 @@ * proxied Java method invocations to their original target on the Java side. * * <pre>------------------------ Apache Version 2.0 license ------------------------- - * Copyright (C) 2010-2011 Rony G. Flatscher + * Copyright (C) 2010-2012 Rony G. Flatscher * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -868,7 +868,6 @@ * @param sb the StringBuffer to append the statements to * @param m a Method object which needs to get proxied * @param newClzName the new name of the new class - * @param javaClassToProxy the Java (abstract) class that gets extended * @param ri RunInfos runtime infos for managing the process */ static void createMethod (StringBuffer sb, Method m, String newClzName, RunInfos ri) @@ -1271,7 +1270,7 @@ /** Create comma-separated list of parameter types, enclosed in round parenthesis. * @param paramTypes array of Class objects - * @param bMethodSignature + * @param kind */ // static String createMethodSignatureParen(Class [] paramTypes, boolean bMethodSignature) static String createListOfClassNames(Class [] paramTypes, int kind) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2012-02-23 18:57:00 UTC (rev 62) @@ -335,7 +335,7 @@ /** Stores the Rexx engine. */ BSFEngine rexxEngine; - /** Getter method for field {@link rexxEngine}. */ + /** Getter method for field {@link #rexxEngine}. */ protected BSFEngine getRexxEngine() // accessor { return rexxEngine; @@ -670,7 +670,7 @@ * @param args an array of arguments to pass on * * @throws a {@link RexxException}, if the argument does not denote an existing Rexx interpreter instance - * @return + * @return a return value from running the Rexx program or <code>null</code> * * @since May 2009 */ @@ -723,7 +723,6 @@ /** Unregisters the Rexx object denoted by 'obj_ID' from the JNI registry. * - * @param rii_ID a String representing the Rexx interpreter instance as returned by {@link #jniRexxCreateInterpreterInstance ()} * @param obj_ID the object id that is used as a key on the JNI side * * @return number of references to the Rexx object in the JNI registry left; a Modified: trunk/bsf4oorexx.dev/source_java/RexxConfiguration.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxConfiguration.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/bsf4oorexx.dev/source_java/RexxConfiguration.java 2012-02-23 18:57:00 UTC (rev 62) @@ -7,7 +7,7 @@ /** * This class allows to configure a Rexx interpreter instance, before it gets created employing - * {@link RexxAndJava#createRexxInterpreterInstance() RexxAndJava.createRexxInterpreterInstance()}. + * {@link RexxAndJava#createRexxInterpreterInstance(RexxConfiguration rc) RexxAndJava.createRexxInterpreterInstance(RexxConfiguration rc)}. * Cf. ooRexx' <code>rexxpg.pdf</code> documentation for the Rexx interpreter creation options. * * All final static fields that use ooRexx names also use the ooRexx constant values from @@ -356,9 +356,9 @@ */ protected boolean modifiable=true; - /** Access method for field {@link modifiable} + /** Access method for field {@link #modifiable} * - * @return current setting of field {@link modifiable} + * @return current setting of field {@link #modifiable} */ public boolean isModifiable() { @@ -375,8 +375,8 @@ * possible at runtime to change to a RexxExitHandler object using * {@link RexxConfiguration#setExitHandler(int function, RexxExitHandler exitHandler)}. * - * @param function the Rexx exit function number which serves as the index for {@link exitHandlers} - * @param exitHandler a RexxExitHandler object + * @param function the Rexx exit function number + * @param exitHandler a {@link RexxExitHandler} object */ public void addExitHandler(int function, RexxExitHandler exitHandler) throws BSFException { @@ -397,7 +397,7 @@ /** Allows to replace a defined {@link RexxExitHandler} with a new one or to remove it. * - * @param function the Rexx exit function number which serves as the index for {@link exitHandlers} + * @param function the Rexx exit function number * @param exitHandler a RexxExitHandler object or <code>null</code>, if the exit should not be served anymore */ public RexxExitHandler setExitHandler(int function, RexxExitHandler exitHandler) throws BSFException Modified: trunk/bsf4oorexx.dev/source_java/RexxEngine.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxEngine.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/bsf4oorexx.dev/source_java/RexxEngine.java 2012-02-23 18:57:00 UTC (rev 62) @@ -1083,7 +1083,7 @@ /** Allow halting an individual Rexx thread (raising the <code>HALT</code> condition) having * the given thread ID. * - * @param a string with the target thread ID, or + * @param tid a string with the target thread ID, or * the string <code>"0"</code> (raises the <code>HALT</code> condition * in all ooRexx threads) * Modified: trunk/bsf4oorexx.dev/source_java/RexxHandler.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxHandler.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/bsf4oorexx.dev/source_java/RexxHandler.java 2012-02-23 18:57:00 UTC (rev 62) @@ -66,7 +66,7 @@ * "Appendix C. Error Numbers and Messages". * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object - * @param definedErrorNumber: <code>errorNumber*1000+subcode</code> + * @param definedErrorNumber <code>errorNumber*1000+subcode</code> * @param substitutions an Object array containing substitution values for the error message (if * more entries get added, then they can be retrieved by ooRexx using the additional method * of the condition object) @@ -84,7 +84,7 @@ * "Appendix C. Error Numbers and Messages". * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object - * @param definedErrorNumber: <code>errorNumber*1000+subcode</code> + * @param definedErrorNumber <code>errorNumber*1000+subcode</code> */ public static void raiseException0(Object slot, long definedErrorNumber) { @@ -98,7 +98,7 @@ * "Appendix C. Error Numbers and Messages". * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object - * @param definedErrorNumber: <code>errorNumber*1000+subcode</code> + * @param definedErrorNumber <code>errorNumber*1000+subcode</code> * @param substitution1 String used as the first substition value for the error message */ public static void raiseException1(Object slot, long definedErrorNumber, String substitution1) @@ -113,7 +113,7 @@ * "Appendix C. Error Numbers and Messages". * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object - * @param definedErrorNumber: <code>errorNumber*1000+subcode</code> + * @param definedErrorNumber <code>errorNumber*1000+subcode</code> * @param substitution1 String used as the first substition value for the error message * @param substitution2 String used as the second substition value for the error message */ Modified: trunk/bsf4oorexx.dev/source_java/RexxProxy.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxProxy.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/bsf4oorexx.dev/source_java/RexxProxy.java 2012-02-23 18:57:00 UTC (rev 62) @@ -17,9 +17,9 @@ /** * This class allows RexxProxy objects to be created from native (JNI) code and will be - * registered in the BSFRegistry using the String retrievable by {@link #getRegistryKeyValue()}. + * registered in the BSFRegistry using the String retrievable by {@link #getBsfRegistryKey()}. * It allows ooRexx objects to be addressed by Java, as well as creating any number - * of java.lang.reflect.Proxy objects from it(cf. {@link #public Object newJavaProxyInstance(Object[] interfaces)}) + * of java.lang.reflect.Proxy objects from it(cf. {@link #newJavaProxyInstance(Object[] interfaces)}) * which forward any method invocation to the proxied ooRexx object. * The class is public, such that any Java program can define variables of type RexxProxy. However, only * native code is capable of instantiating this class. Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java =================================================================== --- trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java 2012-02-23 18:57:00 UTC (rev 62) @@ -572,9 +572,9 @@ * undefined in sequence, i.e., the value * has to be ignored by the callee * - * @param aOutParamIndex Out indices + * @param aOutParamsIndex Out indices * - * @param aOutParam Out parameters + * @param aOutParams Out parameters * * @return The value returned from the function * being invoked Modified: trunk/make-docs-apache.cmd =================================================================== --- trunk/make-docs-apache.cmd 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/make-docs-apache.cmd 2012-02-23 18:57:00 UTC (rev 62) @@ -8,7 +8,7 @@ set doc_date=%runDate% if not "%doc_date%"=="" goto continue -set doc_date=2012-02-22 +set doc_date=2012-02-23 :continue set docs_header=-header "%doc_date%, rgf" Modified: trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool$RunInfos.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.java 2012-02-23 18:57:00 UTC (rev 62) @@ -35,7 +35,7 @@ * proxied Java method invocations to their original target on the Java side. * * <pre>------------------------ Apache Version 2.0 license ------------------------- - * Copyright (C) 2010-2011 Rony G. Flatscher + * Copyright (C) 2010-2012 Rony G. Flatscher * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -868,7 +868,6 @@ * @param sb the StringBuffer to append the statements to * @param m a Method object which needs to get proxied * @param newClzName the new name of the new class - * @param javaClassToProxy the Java (abstract) class that gets extended * @param ri RunInfos runtime infos for managing the process */ static void createMethod (StringBuffer sb, Method m, String newClzName, RunInfos ri) @@ -1271,7 +1270,7 @@ /** Create comma-separated list of parameter types, enclosed in round parenthesis. * @param paramTypes array of Class objects - * @param bMethodSignature + * @param kind */ // static String createMethodSignatureParen(Class [] paramTypes, boolean bMethodSignature) static String createListOfClassNames(Class [] paramTypes, int kind) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-02-23 18:57:00 UTC (rev 62) @@ -335,7 +335,7 @@ /** Stores the Rexx engine. */ BSFEngine rexxEngine; - /** Getter method for field {@link rexxEngine}. */ + /** Getter method for field {@link #rexxEngine}. */ protected BSFEngine getRexxEngine() // accessor { return rexxEngine; @@ -670,7 +670,7 @@ * @param args an array of arguments to pass on * * @throws a {@link RexxException}, if the argument does not denote an existing Rexx interpreter instance - * @return + * @return a return value from running the Rexx program or <code>null</code> * * @since May 2009 */ @@ -723,7 +723,6 @@ /** Unregisters the Rexx object denoted by 'obj_ID' from the JNI registry. * - * @param rii_ID a String representing the Rexx interpreter instance as returned by {@link #jniRexxCreateInterpreterInstance ()} * @param obj_ID the object id that is used as a key on the JNI side * * @return number of references to the Rexx object in the JNI registry left; a Modified: trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java 2012-02-23 18:57:00 UTC (rev 62) @@ -7,7 +7,7 @@ /** * This class allows to configure a Rexx interpreter instance, before it gets created employing - * {@link RexxAndJava#createRexxInterpreterInstance() RexxAndJava.createRexxInterpreterInstance()}. + * {@link RexxAndJava#createRexxInterpreterInstance(RexxConfiguration rc) RexxAndJava.createRexxInterpreterInstance(RexxConfiguration rc)}. * Cf. ooRexx' <code>rexxpg.pdf</code> documentation for the Rexx interpreter creation options. * * All final static fields that use ooRexx names also use the ooRexx constant values from @@ -356,9 +356,9 @@ */ protected boolean modifiable=true; - /** Access method for field {@link modifiable} + /** Access method for field {@link #modifiable} * - * @return current setting of field {@link modifiable} + * @return current setting of field {@link #modifiable} */ public boolean isModifiable() { @@ -375,8 +375,8 @@ * possible at runtime to change to a RexxExitHandler object using * {@link RexxConfiguration#setExitHandler(int function, RexxExitHandler exitHandler)}. * - * @param function the Rexx exit function number which serves as the index for {@link exitHandlers} - * @param exitHandler a RexxExitHandler object + * @param function the Rexx exit function number + * @param exitHandler a {@link RexxExitHandler} object */ public void addExitHandler(int function, RexxExitHandler exitHandler) throws BSFException { @@ -397,7 +397,7 @@ /** Allows to replace a defined {@link RexxExitHandler} with a new one or to remove it. * - * @param function the Rexx exit function number which serves as the index for {@link exitHandlers} + * @param function the Rexx exit function number * @param exitHandler a RexxExitHandler object or <code>null</code>, if the exit should not be served anymore */ public RexxExitHandler setExitHandler(int function, RexxExitHandler exitHandler) throws BSFException Modified: trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java 2012-02-23 18:57:00 UTC (rev 62) @@ -1083,7 +1083,7 @@ /** Allow halting an individual Rexx thread (raising the <code>HALT</code> condition) having * the given thread ID. * - * @param a string with the target thread ID, or + * @param tid a string with the target thread ID, or * the string <code>"0"</code> (raises the <code>HALT</code> condition * in all ooRexx threads) * Modified: trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java 2012-02-23 18:57:00 UTC (rev 62) @@ -66,7 +66,7 @@ * "Appendix C. Error Numbers and Messages". * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object - * @param definedErrorNumber: <code>errorNumber*1000+subcode</code> + * @param definedErrorNumber <code>errorNumber*1000+subcode</code> * @param substitutions an Object array containing substitution values for the error message (if * more entries get added, then they can be retrieved by ooRexx using the additional method * of the condition object) @@ -84,7 +84,7 @@ * "Appendix C. Error Numbers and Messages". * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object - * @param definedErrorNumber: <code>errorNumber*1000+subcode</code> + * @param definedErrorNumber <code>errorNumber*1000+subcode</code> */ public static void raiseException0(Object slot, long definedErrorNumber) { @@ -98,7 +98,7 @@ * "Appendix C. Error Numbers and Messages". * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object - * @param definedErrorNumber: <code>errorNumber*1000+subcode</code> + * @param definedErrorNumber <code>errorNumber*1000+subcode</code> * @param substitution1 String used as the first substition value for the error message */ public static void raiseException1(Object slot, long definedErrorNumber, String substitution1) @@ -113,7 +113,7 @@ * "Appendix C. Error Numbers and Messages". * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object - * @param definedErrorNumber: <code>errorNumber*1000+subcode</code> + * @param definedErrorNumber <code>errorNumber*1000+subcode</code> * @param substitution1 String used as the first substition value for the error message * @param substitution2 String used as the second substition value for the error message */ Modified: trunk/org/rexxla/bsf/engines/rexx/RexxProxy.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxProxy.java 2012-02-23 17:45:52 UTC (rev 61) +++ trunk/org/rexxla/bsf/engines/rexx/RexxProxy.java 2012-02-23 18:57:00 UTC (rev 62) @@ -17,9 +17,9 @@ /** * This class allows RexxProxy objects to be created from native (JNI) code and will be - * registered in the BSFRegistry using the String retrievable by {@link #getRegistryKeyValue()}. + * registered in the BSFRegistry using the String retrievable by {@link #getBsfRegistryKey()}. * It allows ooRexx objects to be addressed by Java, as well as creating any number - * of java.lang.reflect.Proxy objects from it(cf. {@link #public Object newJavaProxyInstance(Object[] interfaces)}) + * of java.lang.reflect.Proxy objects from it(cf. {@link #newJavaProxyInstance(Object[] interfaces)}) * which forward any method invocation to the proxied ooRexx object. * The class is public, such that any Java program can define variables of type RexxProxy. However, only * native code is capable of instantiating this class. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2012-02-25 15:42:56
|
Revision: 69 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=69&view=rev Author: orexx Date: 2012-02-25 15:42:48 +0000 (Sat, 25 Feb 2012) Log Message: ----------- 2012-02-25 Added ability to use Rexx .nil object as a return value in exit and command handlers, supplies language and interpreter versions to handlers. Some tidying up. New features should now be ready for testing. Modified Paths: -------------- trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll trunk/bsf4oorexx.dev/source_cc/32/libBSF4ooRexx.so trunk/bsf4oorexx.dev/source_cc/64/BSF4ooRexx.dll trunk/bsf4oorexx.dev/source_cc/64/libBSF4ooRexx.so trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc trunk/bsf4oorexx.dev/source_cc/org_rexxla_bsf_engines_rexx_RexxAndJava.h trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.java trunk/bsf4oorexx.dev/source_java/RexxConfiguration.java trunk/bsf4oorexx.dev/source_java/RexxExitHandler.java trunk/bsf4oorexx.dev/source_java/RexxHandler.java trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava.h trunk/make-docs-apache.cmd trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.class trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.class trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.java trunk/org/rexxla/bsf/engines/rexx/RexxHandler.class trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java trunk/samples/Java/handlers/commandHandlers/01_commandHandler/JavaRunRexxWithCommandHandler.class trunk/samples/Java/handlers/commandHandlers/01_commandHandler/JavaRunRexxWithCommandHandler.java trunk/samples/Java/handlers/commandHandlers/01_commandHandler/testRexxWithCommandHandler.rxj trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaAliceCommandHandler.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaDanielCommandHandler.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaMichaelCommandHandler.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaReturnGregorianCalendarCommandHandler.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaRonyCommandHandler.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaTestConditionCommandHandler.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaTestException0CommandHandler.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaTestException1CommandHandler.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaTestException2CommandHandler.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaTestExceptionCommandHandler.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits.class trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits.java Added Paths: ----------- trunk/samples/Java/handlers/commandHandlers/01_commandHandler/anotherpath/ trunk/samples/Java/handlers/commandHandlers/01_commandHandler/anotherpath/another_rexx_pgm.pre Modified: trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/32/libBSF4ooRexx.so =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/64/BSF4ooRexx.dll =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/64/libBSF4ooRexx.so =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc =================================================================== --- trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc 2012-02-25 15:42:48 UTC (rev 69) @@ -29,6 +29,13 @@ * * last change: $Revision: 888 $ $Author: Administrator $ $Date: 2010-08-16 16:02:21 +0200 (Mon, 16. Aug 2010) $ + 4.1.-12 2012-02-25 - added native functions jniNil(), jniInterpreterVersion(), jniLanguageLevel() + - RgfRexxObject2JavaObject(): now wraps up .nil as an own RexxProxy! This + will allow Rexx handlers to also distinguish between "nothing returned" (NULL) + and returning .nil + + 4.1.-11 2012-02-24 - added native functions jniGetLocalEnvironment(), jniGetGlobalEnvironment() + 4.1.-10 2012-02-19 - added native function _jniGetCallerContext() - RgfCreateRexxlikeErrorInfo(): set informative Java message, if no traceback line @@ -510,10 +517,10 @@ // #define DEBUG_RGF_PROCESS_J_ARG1 // rgf, 2012-02-07; renamed to RgfJavaObject2RexxObject, 2012-02-18 // #define DEBUG_RGF_PROCESS_J_ARGS + // #define DEBUG_REXX_OBJECT_TO_JAVA // rgf, 2012-02-19 -// #define DEBUG_ARRAY_ARGS // rgf, 2012-02-21 +// #ydefine DEBUG_ARRAY_ARGS // rgf, 2012-02-21 -// #define DEBUGINFO_FOR_OTHERS // rgf, 2012-02-22: if flag is set, then show some debug infos for others who try to debug #if defined (UNIX) && defined (NIXI_NOXI) // comment before && to activate all of the flags below @@ -554,7 +561,10 @@ #define DEBUG_JAVA_ATTACH_DETACH // ---rgf, 2009-10-07 #define RGF_COMMAND_HANDLER // rgf, 2012-02-07 + #define RGF_SYSTEM_EXIT_HANDLER // rgf, 2012-02-07 + #define DEBUG_RGF_PROCESS_J_ARG1 // rgf, 2012-02-07; renamed to RgfJavaObject2RexxObject, 2012-02-18 + #define DEBUG_ARRAY_ARGS // rgf, 2012-02-21 #endif #if defined (__APPLE__) && NIXI // only define, if rexx is started on the main thread and established a CFRunLoop (then awt's event dispatch thread needs to run on a separate thread) @@ -733,11 +743,11 @@ #if defined (BSF4REXX_32_BIT) - #define BSF_VERSION "410.20120224 org/rexxla/bsf/engines/rexx 32-bit" // version: "MajorNumber"."YYYYMMDD" + #define BSF_VERSION "410.20120225 org/rexxla/bsf/engines/rexx 32-bit" // version: "MajorNumber"."YYYYMMDD" #elif defined (BSF4REXX_64_BIT) - #define BSF_VERSION "410.20120224 org/rexxla/bsf/engines/rexx 64-bit" // version: "MajorNumber"."YYYYMMDD" + #define BSF_VERSION "410.20120225 org/rexxla/bsf/engines/rexx 64-bit" // version: "MajorNumber"."YYYYMMDD" #else - #define BSF_VERSION "410.20120224 org/rexxla/bsf/engines/rexx n/a-bit" // version: "MajorNumber"."YYYYMMDD" + #define BSF_VERSION "410.20120225 org/rexxla/bsf/engines/rexx n/a-bit" // version: "MajorNumber"."YYYYMMDD" #endif #define JAVA_4_REXX "org/rexxla/bsf/engines/rexx/Java4Rexx" // 2005-06-02, supportive Java4Rexx-class @@ -2670,20 +2680,31 @@ // 2 for a beanname (Java object resides in BSF registry) inline int RgfValue4JavaIndicator(RexxThreadContext *rtc, RexxObjectPtr robj) // <=== <=== <=== { +#if defined( DEBUG2 ) + fprintf(stderr, "... >>> arrived: (RgfValue4JavaIndicator): rtc=[%p], robj=[%p]\n", rtc, robj); fflush(stderr); +#endif if (robj==NULL) { +#if defined( DEBUG2 ) + fprintf(stderr, "... <<< (RgfValue4JavaIndicator): returning '-1' -> NULL !\n");fflush(stderr); +#endif return -1; // indicate NULL } if (robj==rtc->Nil()) { +#if defined( DEBUG2 ) + fprintf(stderr, "... <<< (RgfValue4JavaIndicator): returning '-2' -> .nil !\n");fflush(stderr); +#endif return -2; // indicate .nil } if (rtc->IsOfType(robj, "STRING")) { -// fprintf(stderr, "... RgfProcessReturnValue4Java(): IsOfType-String! IsString()=[%d]\n", rtc->IsString(robj)); fflush(stderr); +#if defined( DEBUG2 ) + fprintf(stderr, "... <<< (RgfValue4JavaIndicator): returning '1' -> plain string\n");fflush(stderr); +#endif return 1; // indicate plain string } @@ -2692,9 +2713,16 @@ ( rtc->IsOfType(robj, "CLASS") && rtc->HasMethod(robj, "BSF.LOADCLASS") ) ) { +#if defined( DEBUG2 ) + fprintf(stderr, "... <<< (RgfValue4JavaIndicator): returning '2' -> use beanName for lookup\n");fflush(stderr); +#endif return 2; // use objectname (=beanName for BSFRegistry) } +#if defined( DEBUG2 ) + fprintf(stderr, "... <<< (RgfValue4JavaIndicator): returning '0' -> create RexxProxy()]\n");fflush(stderr); +#endif + return 0; // indicates a RexxProxy should be created } @@ -7118,14 +7146,15 @@ jobject jresult=NULL; // default for -1, -2 #if defined (DEBUG_REXX_PROXY_BSF) || defined (DEBUG_REXX_OBJECT_TO_JAVA) || defined (DEBUG_ARRAY_ARGS) - RexxStringObject strTmpObj= RgfDebug_GetMaxStringValue(context, tmpObj, 90) ; - fprintf(stderr, "... RgfRexxObject2JavaObject():b: typeIndicator=[%d], maxStringValue=[%.256s]\n", typeIndicator, (unsigned long) context->CString(strTmpObj) ); - - // fprintf(stderr, "... BSF(): arg[%u]=[%.256s]\n", i, context->CString(context->SendMessage0(tmpObj, "STRING"))); + RexxStringObject strTmpObj= ( tmpObj==NULL ? NULL : RgfDebug_GetMaxStringValue(context, tmpObj,90) ) ; + fprintf(stderr, "... RgfRexxObject2JavaObject():b: typeIndicator=[%d], maxStringValue=[%.256s]\n", + typeIndicator, + ( strTmpObj==NULL ? "NULL" : context->CString(strTmpObj))); #endif - if (typeIndicator>=0) // a RexxString, BSF/UNO_Proxy or any other RexxObject + // if (typeIndicator>=0) // a RexxString, BSF/UNO_Proxy or any other RexxObject + if (typeIndicator!=-1) // a RexxString, BSF/UNO_Proxy or any other RexxObject { if (typeIndicator==1) // a .STRING @@ -7188,6 +7217,14 @@ } } } + +#if defined (DEBUG_REXX_PROXY_BSF) || defined (DEBUG_REXX_OBJECT_TO_JAVA) || defined (DEBUG_ARRAY_ARGS) + else + { + fprintf(stderr, "-> RgfRexxObject2JavaObject():e: before returning jresult=[%p], typeIndicator=[%d]\n", jresult, typeIndicator); + fflush(stderr); + } +#endif return jresult; } @@ -16497,19 +16534,6 @@ // get result, if any, turn it into a RexxObjectPtr jobject jresult=param.env->GetObjectArrayElement(jpb, (jint) 3); - if (jresult!=NULL) - { - retc=RgfJavaObject2RexxObject (param.env, - NULL, // RexxAndJava object, if NULL will be fetched in routine - context->threadContext, // RexxThreadContext - jresult, // Java object to turn into a RexxObjectPtr - FALSE // if FALSE, do not load .BSF, if not found - ); - if (retc==NULL) // Java returned NULL, so we return .nil - { - retc=context->Nil(); - } - } if (exitNumber==RXOFNC) { @@ -16784,13 +16808,13 @@ } - // turn Java array to Rexx array - RexxObjectPtr res= RgfJavaObject2RexxObject (param.env, - struRii->rajo, // RexxAndJava object, needed for registering Java objects - context->threadContext, // RexxThreadContext - jresult, // Java object to turn into a RexxObjectPtr - FALSE // if FALSE, do not load .BSF, if not found - ); + // turn Java object to Rexx object + RexxObjectPtr res=RgfJavaObject2RexxObject (param.env, + struRii->rajo, // RexxAndJava object, needed for registering Java objects + context->threadContext, // RexxThreadContext + jresult, // Java object to turn into a RexxObjectPtr + FALSE // if FALSE, do not load .BSF, if not found + ); RgfAcquireLock(); environmentDetachFrom(¶m, FALSE); // do not close group @@ -16798,8 +16822,8 @@ #if defined ( RGF_INFO ) // || defined ( RGF_COMMAND_HANDLER ) fprintf(stderr, "*** RGF_INFO: rexx_command_handler_entry() - TheEnd - , address=[%s], command=[%s] <--- ...\n", - context->CString(address), - context->CString(command) + context->CString(address), + context->CString(command) ); fflush(stderr); #endif @@ -17194,7 +17218,7 @@ RexxObjectPtr rop=context->GetConditionInfo(); #if defined (DEBUG_JNI) - fprintf(stderr, "==> ==> 2/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetConditionInfo <== <==\n"); + fprintf(stderr, "==> ==> 2/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetConditionInfo rop=[%p] <== <==\n",rop); #endif STRUCT_PARAM param={0, env, rajo, 0, 0, 0, 0, 0}; @@ -17203,7 +17227,7 @@ // jobjectArray joa=RgfRexxArray2JavaArray(¶m, context->threadContext, context->ArrayOfOne(rop), NULL); #if defined (DEBUG_JNI) - fprintf(stderr, "==> ==> 2/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetConditionInfo <== <==\n"); + fprintf(stderr, "==> ==> 3/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetConditionInfo <== <==\n"); #endif // return env->GetObjectArrayElement(joa, (jint) 0); // return Java object matching Rexx @@ -17466,9 +17490,98 @@ return jobj; } + +/* + + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + + * Method: jniNil + + * Signature: ([Ljava/lang/Object;)Ljava/lang/Object; + + */ + +JNIEXPORT jobject JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniNil + + (JNIEnv *env, jobject rajo, jobjectArray j_slot) +{ +#if defined (DEBUG_JNI) + fprintf(stderr, "==> ==> 1/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniNil <== <==\n");fflush(stderr); +#endif + + // get RexxExitContext from opaque slot argument + RexxExitContext *context=(RexxExitContext *) rgfUnwrapPointer(env, (jstring) env->GetObjectArrayElement(j_slot, (jint) 2)); + RexxObjectPtr rop=context->Nil(); + + STRUCT_PARAM param={0, env, rajo, 0, 0, 0, 0, 0}; + jobject jobj=RgfRexxObject2JavaObject(¶m,context->threadContext,rop); + +#if defined (DEBUG_JNI) + fprintf(stderr, "==> ==> 2/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniNil <== <==\n");fflush(stderr); +#endif + return jobj; +} +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + + * Method: jniInterpreterVersion + + * Signature: ([Ljava/lang/Object;)J + + */ + +JNIEXPORT jlong JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniInterpreterVersion + + (JNIEnv *env, jobject rajo, jobjectArray j_slot) +{ +#if defined (DEBUG_JNI) + fprintf(stderr, "==> ==> 1/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniInterpreterVersion <== <==\n");fflush(stderr); +#endif + + // get RexxExitContext from opaque slot argument + RexxExitContext *context=(RexxExitContext *) rgfUnwrapPointer(env, (jstring) env->GetObjectArrayElement(j_slot, (jint) 2)); + size_t res=context->InterpreterVersion(); + +#if defined (DEBUG_JNI) + fprintf(stderr, "==> ==> 2/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniInterpreterVersion <== <==\n");fflush(stderr); +#endif + return res; +} + + +/* + + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + + * Method: jniLanguageLevel + + * Signature: ([Ljava/lang/Object;)J + + */ + +JNIEXPORT jlong JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniLanguageLevel + + (JNIEnv *env, jobject rajo, jobjectArray j_slot) +{ +#if defined (DEBUG_JNI) + fprintf(stderr, "==> ==> 1/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniLanguageLevel <== <==\n");fflush(stderr); +#endif + + // get RexxExitContext from opaque slot argument + RexxExitContext *context=(RexxExitContext *) rgfUnwrapPointer(env, (jstring) env->GetObjectArrayElement(j_slot, (jint) 2)); + size_t res=context->LanguageLevel(); + +#if defined (DEBUG_JNI) + fprintf(stderr, "==> ==> 2/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniLanguageLevel <== <==\n");fflush(stderr); +#endif + return res; +} + + + #ifdef __cplusplus } // closing bracket #endif Modified: trunk/bsf4oorexx.dev/source_cc/org_rexxla_bsf_engines_rexx_RexxAndJava.h =================================================================== --- trunk/bsf4oorexx.dev/source_cc/org_rexxla_bsf_engines_rexx_RexxAndJava.h 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/bsf4oorexx.dev/source_cc/org_rexxla_bsf_engines_rexx_RexxAndJava.h 2012-02-25 15:42:48 UTC (rev 69) @@ -353,6 +353,30 @@ /* * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniNil + * Signature: ([Ljava/lang/Object;)Ljava/lang/Object; + */ +JNIEXPORT jobject JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniNil + (JNIEnv *, jobject, jobjectArray); + +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniInterpreterVersion + * Signature: ([Ljava/lang/Object;)J + */ +JNIEXPORT jlong JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniInterpreterVersion + (JNIEnv *, jobject, jobjectArray); + +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniLanguageLevel + * Signature: ([Ljava/lang/Object;)J + */ +JNIEXPORT jlong JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniLanguageLevel + (JNIEnv *, jobject, jobjectArray); + +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava * Method: jniInitialize4Rexx * Signature: ()I */ Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2012-02-25 15:42:48 UTC (rev 69) @@ -41,6 +41,7 @@ */ /* + 2012-02-25, ---rgf, - added methods jniNil(), jniInterpreterVersion(), jniLanguageLevel() 2012-02-24, ---rgf, - added methods jniGetLocalEnvironment(), jniGetGlobalEnvironment() 2012-02-19, ---rgf, - added methods jniGetCallerContext(), jniGetAllContextVariables @@ -261,7 +262,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "410.20120224"; + static final public String version = "410.20120225"; static final private String pkgName = "org.rexxla.bsf.engines.rexx"; @@ -795,7 +796,12 @@ protected native Object jniGetLocalEnvironment(Object[] slot); protected native Object jniGetGlobalEnvironment(Object[] slot); + // rgf, 2012-02-25 + protected native Object jniNil(Object[] slot); + protected native long jniInterpreterVersion(Object[] slot); + protected native long jniLanguageLevel (Object[] slot); + /** rgf, 2003-01-15, used for allowing the BSF4ooRexx-DLL to get at *env, *obj and then to mid etc. * */ protected native int jniInitialize4Rexx() ; Modified: trunk/bsf4oorexx.dev/source_java/RexxConfiguration.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxConfiguration.java 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/bsf4oorexx.dev/source_java/RexxConfiguration.java 2012-02-25 15:42:48 UTC (rev 69) @@ -37,12 +37,15 @@ */ /* 2012-02-09, rgf: - ArrayList needs to be initialized, such that size() matches the number of exits + 2012-02-25, rgf: - fix problem with turning ArrayList into String[] for required libraries, + renamed getRequiredLibrary[4JNI]() to getRequiredLibraries[4JNI] to reflect the + fact, that multiple libraries can be required */ public class RexxConfiguration { /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - final static public String version = "1.20120209"; + final static public String version = "1.20120225"; // ------------------------------------------------------------------------------------ @@ -127,9 +130,17 @@ * @return array of type String containing all required native library names that should get loaded * with the creation of the Rexx interpreter instance */ - public String [] getRequiredLibrary() + public String [] getRequiredLibraries() { - return (String[]) load_required_library.toArray(); + int size=load_required_library.size(); + String str[]=new String[size]; + + for (int i=0;i<size;i++) + { + str[i]=(String) load_required_library.get(i); + } + // return (String[]) load_required_library.toArray(); + return str; } @@ -138,13 +149,13 @@ * @return array of type String containing all required native library names that should get loaded * with the creation of the Rexx interpreter instance or <code>null</code>, if none defined */ - public String [] getRequiredLibrary4JNI() + public String [] getRequiredLibraries4JNI() { if (load_required_library.size()==0) // if none defined, return null { return null; } - return getRequiredLibrary(); + return getRequiredLibraries(); } @@ -542,7 +553,7 @@ initial_address_environment, // [1]: INITIAL_ADDRESS_ENVIRONMENT (null or String) external_call_path, // [2]: EXTERNAL_CALL_PATH (null or String) external_call_extensions, // [3]: EXTERNAL_CALL_EXTENSIONS (null or String) - getRequiredLibrary4JNI(), // [4]: LOAD_REQUIRED_LIBRARY (null or String[]) + getRequiredLibraries4JNI(), // [4]: LOAD_REQUIRED_LIBRARY (null or String[]) getExitHandlers4JNI(), // [5]: DIRECT_EXITS (null or int[] exits) getCommandHandlerNames4JNI() // [6]: DIRECT_ENVIRONMENTS (null or String[] commandNames) }; Modified: trunk/bsf4oorexx.dev/source_java/RexxExitHandler.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxExitHandler.java 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/bsf4oorexx.dev/source_java/RexxExitHandler.java 2012-02-25 15:42:48 UTC (rev 69) @@ -27,13 +27,13 @@ * * @author Rony G. Flatscher * @version 1.0 - * @since 2012-02-21 + * @since 2012-02-25 */ public interface RexxExitHandler { /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - final static public String version = "99.20120221"; + final static public String version = "100.20120225"; // -------------------------------------------------------------------------------- // Exit return actions @@ -108,7 +108,7 @@ /** Names of Rexx system exit function numbers between number 0 and 15. * (As baseline is Java 1.4 enumerations cannot be used.) */ - static public String RX_EXIT_NAMES[]={"0=n/a!", "1=n/a!", "RXFNC", "RXCMD", + static final public String RX_EXIT_NAMES[]={"0=n/a!", "1=n/a!", "RXFNC", "RXCMD", "RXMSQ", "RXSIO", "6=n/a!", "RXHLT", "RXTRC", "RXINI", "RXTER", "11=n/a!", "RXEXF", "RXNOVAL", "RXVALUE", "RXOFNC"}; @@ -118,11 +118,13 @@ * <p> - The following documents briefly the parmBlock-array that gets supplied to the Java exit - handler, depending on the exit number and subfunction. Please refer also to the ooRexx - documentation "rexxpg.pdf", section entitled "Context Exit Definitions" - on which this implementation is based upon. + The following documents briefly the <code>{@link parmBlock}</code>-array that gets + supplied to the Java exit handler, depending on the exit number and subfunction. + Please refer also to the ooRexx documentation "rexxpg.pdf", section + entitled "Context Exit Definitions" on which this implementation is + based upon. + <table border> <tr> <th>Exit name/number Modified: trunk/bsf4oorexx.dev/source_java/RexxHandler.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxHandler.java 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/bsf4oorexx.dev/source_java/RexxHandler.java 2012-02-25 15:42:48 UTC (rev 69) @@ -282,4 +282,52 @@ return ((RexxAndJava) arrSlot[0]).jniGetGlobalEnvironment(arrSlot); } + + // 2012-02-25, rgf + /** Returns a reference to the Rexx sentinel value <code>.nil</code>. + * + * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object + * @return a {@link RexxProxy} referring to the <code>.nil</code> object + */ + public static Object getNil(Object slot) + { + Object [] arrSlot=(Object[]) slot; + return ((RexxAndJava) arrSlot[0]).jniNil(arrSlot); + } + + /** (Copied from the ooRexx rexxpg.pdf documentation) " + * Returns the version of the interpreter. The returned version is + * encoded in the 3 least significant bytes of the returned value, + * using 1 byte each for the interpreter version, release, and revision + * values. For example, on a 32-bit platform, this value would be + * <code>0x00040000</code> for version 4.0.0." + * + * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object + * @return the ooRexx interpreter version + */ + public static long getInterpreterVersion(Object slot) + { + Object [] arrSlot=(Object[]) slot; + return ((RexxAndJava) arrSlot[0]).jniInterpreterVersion(arrSlot); + } + + + /** (Copied from the ooRexx rexxpg.pdf documentation) "Returns the language level of + * the interpreter. The returned language level is encoded in the 2 least + * significant bytes of the returned value, using 1 byte each for the + * interpreter version, release, and revision values. For example, on a 32-bit + * platform, this value would be <code>0x00000603</code> for language level 6.03." + * + * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object + * @return the ooRexx language level + */ + public static long getLanguageLevel(Object slot) + { + Object [] arrSlot=(Object[]) slot; + return ((RexxAndJava) arrSlot[0]).jniLanguageLevel(arrSlot); + } + + + + } Modified: trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava.h =================================================================== --- trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava.h 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/bsf4oorexx.dev/source_java/org_rexxla_bsf_engines_rexx_RexxAndJava.h 2012-02-25 15:42:48 UTC (rev 69) @@ -353,6 +353,30 @@ /* * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniNil + * Signature: ([Ljava/lang/Object;)Ljava/lang/Object; + */ +JNIEXPORT jobject JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniNil + (JNIEnv *, jobject, jobjectArray); + +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniInterpreterVersion + * Signature: ([Ljava/lang/Object;)J + */ +JNIEXPORT jlong JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniInterpreterVersion + (JNIEnv *, jobject, jobjectArray); + +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava + * Method: jniLanguageLevel + * Signature: ([Ljava/lang/Object;)J + */ +JNIEXPORT jlong JNICALL Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniLanguageLevel + (JNIEnv *, jobject, jobjectArray); + +/* + * Class: org_rexxla_bsf_engines_rexx_RexxAndJava * Method: jniInitialize4Rexx * Signature: ()I */ Modified: trunk/make-docs-apache.cmd =================================================================== --- trunk/make-docs-apache.cmd 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/make-docs-apache.cmd 2012-02-25 15:42:48 UTC (rev 69) @@ -8,7 +8,7 @@ set doc_date=%runDate% if not "%doc_date%"=="" goto continue -set doc_date=2012-02-24 +set doc_date=2012-02-25 :continue set docs_header=-header "%doc_date%, rgf" Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-02-25 15:42:48 UTC (rev 69) @@ -41,6 +41,7 @@ */ /* + 2012-02-25, ---rgf, - added methods jniNil(), jniInterpreterVersion(), jniLanguageLevel() 2012-02-24, ---rgf, - added methods jniGetLocalEnvironment(), jniGetGlobalEnvironment() 2012-02-19, ---rgf, - added methods jniGetCallerContext(), jniGetAllContextVariables @@ -261,7 +262,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "410.20120224"; + static final public String version = "410.20120225"; static final private String pkgName = "org.rexxla.bsf.engines.rexx"; @@ -795,7 +796,12 @@ protected native Object jniGetLocalEnvironment(Object[] slot); protected native Object jniGetGlobalEnvironment(Object[] slot); + // rgf, 2012-02-25 + protected native Object jniNil(Object[] slot); + protected native long jniInterpreterVersion(Object[] slot); + protected native long jniLanguageLevel (Object[] slot); + /** rgf, 2003-01-15, used for allowing the BSF4ooRexx-DLL to get at *env, *obj and then to mid etc. * */ protected native int jniInitialize4Rexx() ; Modified: trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java 2012-02-25 15:42:48 UTC (rev 69) @@ -37,12 +37,15 @@ */ /* 2012-02-09, rgf: - ArrayList needs to be initialized, such that size() matches the number of exits + 2012-02-25, rgf: - fix problem with turning ArrayList into String[] for required libraries, + renamed getRequiredLibrary[4JNI]() to getRequiredLibraries[4JNI] to reflect the + fact, that multiple libraries can be required */ public class RexxConfiguration { /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - final static public String version = "1.20120209"; + final static public String version = "1.20120225"; // ------------------------------------------------------------------------------------ @@ -127,9 +130,17 @@ * @return array of type String containing all required native library names that should get loaded * with the creation of the Rexx interpreter instance */ - public String [] getRequiredLibrary() + public String [] getRequiredLibraries() { - return (String[]) load_required_library.toArray(); + int size=load_required_library.size(); + String str[]=new String[size]; + + for (int i=0;i<size;i++) + { + str[i]=(String) load_required_library.get(i); + } + // return (String[]) load_required_library.toArray(); + return str; } @@ -138,13 +149,13 @@ * @return array of type String containing all required native library names that should get loaded * with the creation of the Rexx interpreter instance or <code>null</code>, if none defined */ - public String [] getRequiredLibrary4JNI() + public String [] getRequiredLibraries4JNI() { if (load_required_library.size()==0) // if none defined, return null { return null; } - return getRequiredLibrary(); + return getRequiredLibraries(); } @@ -542,7 +553,7 @@ initial_address_environment, // [1]: INITIAL_ADDRESS_ENVIRONMENT (null or String) external_call_path, // [2]: EXTERNAL_CALL_PATH (null or String) external_call_extensions, // [3]: EXTERNAL_CALL_EXTENSIONS (null or String) - getRequiredLibrary4JNI(), // [4]: LOAD_REQUIRED_LIBRARY (null or String[]) + getRequiredLibraries4JNI(), // [4]: LOAD_REQUIRED_LIBRARY (null or String[]) getExitHandlers4JNI(), // [5]: DIRECT_EXITS (null or int[] exits) getCommandHandlerNames4JNI() // [6]: DIRECT_ENVIRONMENTS (null or String[] commandNames) }; Modified: trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.java 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.java 2012-02-25 15:42:48 UTC (rev 69) @@ -27,13 +27,13 @@ * * @author Rony G. Flatscher * @version 1.0 - * @since 2012-02-21 + * @since 2012-02-25 */ public interface RexxExitHandler { /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - final static public String version = "99.20120221"; + final static public String version = "100.20120225"; // -------------------------------------------------------------------------------- // Exit return actions @@ -108,7 +108,7 @@ /** Names of Rexx system exit function numbers between number 0 and 15. * (As baseline is Java 1.4 enumerations cannot be used.) */ - static public String RX_EXIT_NAMES[]={"0=n/a!", "1=n/a!", "RXFNC", "RXCMD", + static final public String RX_EXIT_NAMES[]={"0=n/a!", "1=n/a!", "RXFNC", "RXCMD", "RXMSQ", "RXSIO", "6=n/a!", "RXHLT", "RXTRC", "RXINI", "RXTER", "11=n/a!", "RXEXF", "RXNOVAL", "RXVALUE", "RXOFNC"}; @@ -118,11 +118,13 @@ * <p> - The following documents briefly the parmBlock-array that gets supplied to the Java exit - handler, depending on the exit number and subfunction. Please refer also to the ooRexx - documentation "rexxpg.pdf", section entitled "Context Exit Definitions" - on which this implementation is based upon. + The following documents briefly the <code>{@link parmBlock}</code>-array that gets + supplied to the Java exit handler, depending on the exit number and subfunction. + Please refer also to the ooRexx documentation "rexxpg.pdf", section + entitled "Context Exit Definitions" on which this implementation is + based upon. + <table border> <tr> <th>Exit name/number Modified: trunk/org/rexxla/bsf/engines/rexx/RexxHandler.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java 2012-02-25 15:42:48 UTC (rev 69) @@ -282,4 +282,52 @@ return ((RexxAndJava) arrSlot[0]).jniGetGlobalEnvironment(arrSlot); } + + // 2012-02-25, rgf + /** Returns a reference to the Rexx sentinel value <code>.nil</code>. + * + * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object + * @return a {@link RexxProxy} referring to the <code>.nil</code> object + */ + public static Object getNil(Object slot) + { + Object [] arrSlot=(Object[]) slot; + return ((RexxAndJava) arrSlot[0]).jniNil(arrSlot); + } + + /** (Copied from the ooRexx rexxpg.pdf documentation) " + * Returns the version of the interpreter. The returned version is + * encoded in the 3 least significant bytes of the returned value, + * using 1 byte each for the interpreter version, release, and revision + * values. For example, on a 32-bit platform, this value would be + * <code>0x00040000</code> for version 4.0.0." + * + * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object + * @return the ooRexx interpreter version + */ + public static long getInterpreterVersion(Object slot) + { + Object [] arrSlot=(Object[]) slot; + return ((RexxAndJava) arrSlot[0]).jniInterpreterVersion(arrSlot); + } + + + /** (Copied from the ooRexx rexxpg.pdf documentation) "Returns the language level of + * the interpreter. The returned language level is encoded in the 2 least + * significant bytes of the returned value, using 1 byte each for the + * interpreter version, release, and revision values. For example, on a 32-bit + * platform, this value would be <code>0x00000603</code> for language level 6.03." + * + * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object + * @return the ooRexx language level + */ + public static long getLanguageLevel(Object slot) + { + Object [] arrSlot=(Object[]) slot; + return ((RexxAndJava) arrSlot[0]).jniLanguageLevel(arrSlot); + } + + + + } Modified: trunk/samples/Java/handlers/commandHandlers/01_commandHandler/JavaRunRexxWithCommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/01_commandHandler/JavaRunRexxWithCommandHandler.java =================================================================== --- trunk/samples/Java/handlers/commandHandlers/01_commandHandler/JavaRunRexxWithCommandHandler.java 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/samples/Java/handlers/commandHandlers/01_commandHandler/JavaRunRexxWithCommandHandler.java 2012-02-25 15:42:48 UTC (rev 69) @@ -18,7 +18,7 @@ * needs: testRexxWithCommandHandler.rxj * * @author Rony G. Flatscher - * @since 2012-02-21 + * @since 2012-02-25 */ import org.apache.bsf.*; @@ -40,15 +40,23 @@ // Configure the RexxEngine RexxConfiguration rexxconf=rexxEngine.getRexxConfiguration(); System.err.println("default rexxconf=["+rexxconf+"]\n"); + // configure command handler rexxconf.addCommandHandler("EPOQUE", new JavaRunRexxWithCommandHandler()); - rexxconf.setInitialAddressEnvironment("EPOQUE"); + // add "rxmath" library, distributed with ooRexx + rexxconf.addRequiredLibrary("rxmath"); + + // add "./anotherpath" to lookup + String fs=System.getProperty("file.separator"); // "\" or "/" + String ps=System.getProperty("path.separator"); // ";" or ":" + String ud=System.getProperty("user.dir"); + String dirName="anotherpath"; + rexxconf.setExternalCallPath("."+fs+dirName+ps+ud+fs+dirName); + // add ",.pre" to default call extensions rexxconf.setExternalCallExtensions(rexxconf.getExternalCallExtensions()+",.pre"); - rexxconf.setExternalCallPath(".."); - System.err.println("edited rexxconf=["+rexxconf+"]\n"); // invoke the interpreter and run the Rexx program @@ -67,6 +75,20 @@ case 1: return "123"; case 2: return new GregorianCalendar(); case 3: return null; + case 4: return RexxHandler.getNil(slot); + case 5: long iv=RexxHandler.getInterpreterVersion(slot); + return "InterpreterVersion: -> as hex string: ["+Long.toHexString(iv)+"] -> as long: ["+iv+"]"; + case 6: long ll=RexxHandler.getLanguageLevel(slot); + return "LanguageLevel: -> as hex string: ["+Long.toHexString(ll)+"] -> as long: ["+ll+"]"; + case 7: return RexxHandler.getGlobalEnvironment(slot); + case 8: return RexxHandler.getLocalEnvironment(slot); + case 9: return RexxHandler.getCallerContext(slot); + case 10: return RexxHandler.getAllContextVariables(slot); + case 11: return (RexxHandler.checkCondition(slot) == true ? "1" : "0"); + case 12: return RexxHandler.getConditionInfo(slot); + case 13: return (RexxHandler.checkCondition(slot) == true ? "1" : "0"); + case 14: return "This is \"case 14\", hence returning this interesting String... ;)"; + default: return ""+counter; // turn primitive into Java String } } Added: trunk/samples/Java/handlers/commandHandlers/01_commandHandler/anotherpath/another_rexx_pgm.pre =================================================================== --- trunk/samples/Java/handlers/commandHandlers/01_commandHandler/anotherpath/another_rexx_pgm.pre (rev 0) +++ trunk/samples/Java/handlers/commandHandlers/01_commandHandler/anotherpath/another_rexx_pgm.pre 2012-02-25 15:42:48 UTC (rev 69) @@ -0,0 +1,4 @@ +parse source s +say "==> This is from" pp(s) "at" .dateTime~new + +::requires BSF.CLS Property changes on: trunk/samples/Java/handlers/commandHandlers/01_commandHandler/anotherpath/another_rexx_pgm.pre ___________________________________________________________________ Added: svn:executable + * Modified: trunk/samples/Java/handlers/commandHandlers/01_commandHandler/testRexxWithCommandHandler.rxj =================================================================== --- trunk/samples/Java/handlers/commandHandlers/01_commandHandler/testRexxWithCommandHandler.rxj 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/samples/Java/handlers/commandHandlers/01_commandHandler/testRexxWithCommandHandler.rxj 2012-02-25 15:42:48 UTC (rev 69) @@ -17,16 +17,30 @@ * purpose: demonstrate the possibilities Java command handlers allows for * * @author Rony G. Flatscher - * @since 2012-02-21 + * @since 2012-02-25 */ +say "use required library 'rxmath':" +numeric digits 16 -- maximum precision +say "RxCalcPi():" RxCalcPi() +say "===" + +say "use external path:" +call "another_rexx_pgm" -- quoted, such that it can be found on Unix too +call "another_rexx_pgm.pre" -- quoted, such that it can be found on Unix too +say "===" + +say "use required library 'rxmath':" +numeric digits 16 -- maximum precision +say "RxCalcPi():" RxCalcPi() +say "===" + say "default environment:" address() -do i=1 to 10 +do i=1 to 15 "helloWorld #" i say "rc="pp(rc) "rc~class="pp(rc~class) say "---" - say end Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaAliceCommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaDanielCommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaMichaelCommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaReturnGregorianCalendarCommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaRonyCommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaTestConditionCommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaTestException0CommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaTestException1CommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaTestException2CommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits$JavaTestExceptionCommandHandler.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits.class =================================================================== (Binary files differ) Modified: trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits.java =================================================================== --- trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits.java 2012-02-24 16:27:17 UTC (rev 68) +++ trunk/samples/Java/handlers/commandHandlers/10_commandHandlers/JavaRunRexxWithCommandExits.java 2012-02-25 15:42:48 UTC (rev 69) @@ -58,11 +58,6 @@ rexxconf.setInitialAddressEnvironment("ALICE"); - // add ",.pre" to default call extensions - rexxconf.setExternalCallExtensions(rexxconf.getExternalCallExtensions()+",.pre"); - - rexxconf.setExternalCallPath(".."); - System.err.println("edited rexxconf=["+rexxconf+"]\n"); // invoke the interpreter and run the Rexx program This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2012-03-11 15:24:49
|
Revision: 73 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=73&view=rev Author: orexx Date: 2012-03-11 15:24:42 +0000 (Sun, 11 Mar 2012) Log Message: ----------- 20120311 Checkin uncommitted changes applied for the 2012-02-26 beta release (forgot about them). Modified Paths: -------------- trunk/bsf4oorexx.dev/source_java/RexxExitHandler.java trunk/make-docs-apache.cmd trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.class trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.class trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.java trunk/org/rexxla/bsf/engines/rexx/RexxHandler.class trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java Modified: trunk/bsf4oorexx.dev/source_java/RexxExitHandler.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxExitHandler.java 2012-02-26 11:09:19 UTC (rev 72) +++ trunk/bsf4oorexx.dev/source_java/RexxExitHandler.java 2012-03-11 15:24:42 UTC (rev 73) @@ -122,7 +122,7 @@ * <p> - The following documents briefly the <code>{@link #parmBlock}</code>-array that gets + The following documents briefly the <code>parmBlock</code>-array that gets supplied to the Java exit handler, depending on the exit number and subfunction. Please refer also to the ooRexx documentation "rexxpg.pdf", section Modified: trunk/make-docs-apache.cmd =================================================================== --- trunk/make-docs-apache.cmd 2012-02-26 11:09:19 UTC (rev 72) +++ trunk/make-docs-apache.cmd 2012-03-11 15:24:42 UTC (rev 73) @@ -8,7 +8,7 @@ set doc_date=%runDate% if not "%doc_date%"=="" goto continue -set doc_date=2012-02-25 +set doc_date=2012-02-26 :continue set docs_header=-header "%doc_date%, rgf" Modified: trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java 2012-02-26 11:09:19 UTC (rev 72) +++ trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.java 2012-03-11 15:24:42 UTC (rev 73) @@ -40,6 +40,7 @@ 2012-02-25, rgf: - fix problem with turning ArrayList into String[] for required libraries, renamed getRequiredLibrary[4JNI]() to getRequiredLibraries[4JNI] to reflect the fact, that multiple libraries can be required + 2012-02-26, rgf: - fix wrong documentation for getExitHandlers4JNI() */ public class RexxConfiguration { @@ -222,11 +223,8 @@ return tmpExitHandlers; } - /** Returns an array with two elements, where the first element - * is an int array of exit numbers and the second element is an array of - * RexxExitHandler with the matching Java exit handler object (or <code>null</code>, if - * not yet handled by the Java side). If no exit handlers got defined, then <code>null</code> - * gets returned. + /** Returns an an int array of exit numbers for which Java exit handlers got defined. + * If no exit handlers got defined, then <code>null</code> gets returned. * * @return int array containing the exit numbers or null, if no exit handlers should be defined */ Modified: trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.java 2012-02-26 11:09:19 UTC (rev 72) +++ trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.java 2012-03-11 15:24:42 UTC (rev 73) @@ -29,6 +29,10 @@ * @version 1.0 * @since 2012-02-25 */ + +/* 2012-02-26, rgf - fixed some formatting +*/ + public interface RexxExitHandler { /** Version string indicating version of this class (majorVersion*100+minorVersion @@ -118,7 +122,7 @@ * <p> - The following documents briefly the <code>{@link parmBlock}</code>-array that gets + The following documents briefly the <code>parmBlock</code>-array that gets supplied to the Java exit handler, depending on the exit number and subfunction. Please refer also to the ooRexx documentation "rexxpg.pdf", section Modified: trunk/org/rexxla/bsf/engines/rexx/RexxHandler.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java 2012-02-26 11:09:19 UTC (rev 72) +++ trunk/org/rexxla/bsf/engines/rexx/RexxHandler.java 2012-03-11 15:24:42 UTC (rev 73) @@ -211,7 +211,7 @@ } /** Returns a directory object containing the condition information; this is equivalent to calling - * Condition('O') from within Rexx code (cf "rexxpg.pdf"). + * <code>condition('O')</code> from within Rexx code (cf "rexxpg.pdf"). * * @param slot an opaque Object array as passed to the {@link RexxExitHandler} or {@link RexxCommandHandler} object * @return returns a {@link RexxProxy} for a Rexx Directory object or <code>NULL</code>, if no @@ -295,8 +295,8 @@ return ((RexxAndJava) arrSlot[0]).jniNil(arrSlot); } - /** (Copied from the ooRexx rexxpg.pdf documentation) " - * Returns the version of the interpreter. The returned version is + /** (Copied from the ooRexx rexxpg.pdf documentation) "Returns + * the version of the interpreter. The returned version is * encoded in the 3 least significant bytes of the returned value, * using 1 byte each for the interpreter version, release, and revision * values. For example, on a 32-bit platform, this value would be This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2012-03-12 15:57:03
|
Revision: 76 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=76&view=rev Author: orexx Date: 2012-03-12 15:56:52 +0000 (Mon, 12 Mar 2012) Log Message: ----------- 20120312 Changes for preparing the 2012-03-12 Beta test version. Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/bsf4oorexx.dev/bin/BSF.CLS trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt trunk/bsf4oorexx.dev/information/readme.txt trunk/bsf4oorexx.dev/readme-Linux.txt trunk/bsf4oorexx.dev/readme-MacOSX.txt trunk/bsf4oorexx.dev/readme-Windows.txt trunk/bsf4oorexx.dev/readmeBSF4ooRexx.txt trunk/bsf4oorexx.dev/readmeBSF4ooRexx_next.txt trunk/bsf4oorexx.dev/readmeOOo.txt trunk/bsf4oorexx.dev/readmeOOo_next.txt trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll trunk/bsf4oorexx.dev/source_cc/32/libBSF4ooRexx.dylib trunk/bsf4oorexx.dev/source_cc/32/libBSF4ooRexx.so trunk/bsf4oorexx.dev/source_cc/64/BSF4ooRexx.dll trunk/bsf4oorexx.dev/source_cc/64/libBSF4ooRexx.dylib trunk/bsf4oorexx.dev/source_cc/64/libBSF4ooRexx.so trunk/createDistributionForBSF4ooRexx4.cmd trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.class trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.class trunk/org/rexxla/bsf/engines/rexx/RexxHandler.class Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/bin/BSF.CLS =================================================================== --- trunk/bsf4oorexx.dev/bin/BSF.CLS 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/bsf4oorexx.dev/bin/BSF.CLS 2012-03-12 15:56:52 UTC (rev 76) @@ -408,7 +408,7 @@ call initialize.BSF.dir -- set up .bsf4rexx and its synonym .b4r - .bsf4rexx~version="410.20120225" -- set version + .bsf4rexx~version="410.20120312" -- set version .bsf4rexx~opSys =opsys -- save operating system name as supplied by Rexx' PARSE SOURCE .bsf4rexx~opSys1 =opsys~left(1)~upper -- save operating system name's initial letter in uppercase .bsf4rexx~opSys2 =opsys~left(2)~upper -- save operating system name's first two letters in uppercase Modified: trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt =================================================================== --- trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2012-03-12 15:56:52 UTC (rev 76) @@ -1,3 +1,18 @@ +-------------------------------------- 2012-03-12 ---------------------------------- +- RexxAndJava.java + + - now first trying to load 'netrexx.lang.Rexx' and then loading BSF4ooRexx DLL/so + such that the native library can access the static field "nlR_class" and fetch + the netrexx.lang.Rexx class object, if it was found + + - change scope of "bsfPrefixReturnValue" from static to instance, such that + the Rexx interpreter instances can run with different settings in parallel + +- BSF4ooRexx.cc + + - added support for 'netrexx.lang.Rexx' class for return values from handlers + (if NetRexx Rexx' value, return its string value to Rexx) + -------------------------------------- 2012-02-25 ---------------------------------- - new beta version, major new features Modified: trunk/bsf4oorexx.dev/information/readme.txt =================================================================== --- trunk/bsf4oorexx.dev/information/readme.txt 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/bsf4oorexx.dev/information/readme.txt 2012-03-12 15:56:52 UTC (rev 76) @@ -13,7 +13,7 @@ 2009_orx20_BSF4Rexx-20091031-article.pdf (New features yielding "BSF4ooRexx") 2009_orx20_RGF_UTIL2-20100806-article.pdf (Utility package accompanying BSF4ooRexx) - 2009_orx20_RGF_UITL2-20100120-refcard.pdf + 2009_orx20_RGF_UITL2-20110608-refcard.pdf -Rony G. Flatscher, as of 2010-12-04 +Rony G. Flatscher, as of 2012-03-12 Modified: trunk/bsf4oorexx.dev/readme-Linux.txt =================================================================== --- trunk/bsf4oorexx.dev/readme-Linux.txt 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/bsf4oorexx.dev/readme-Linux.txt 2012-03-12 15:56:52 UTC (rev 76) @@ -1,4 +1,4 @@ -BSF4ooRexx - Installation Directions for Linux 25 Feb 2012 +BSF4ooRexx - Installation Directions for Linux 12 Mar 2012 ============================================== Home: <http://sourceforge.net/projects/bsf4oorexx/> Modified: trunk/bsf4oorexx.dev/readme-MacOSX.txt =================================================================== --- trunk/bsf4oorexx.dev/readme-MacOSX.txt 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/bsf4oorexx.dev/readme-MacOSX.txt 2012-03-12 15:56:52 UTC (rev 76) @@ -1,4 +1,4 @@ -BSF4ooRexx - Installation Directions for MacOSX 25 Feb 2012 +BSF4ooRexx - Installation Directions for MacOSX 12 Mar 2012 =============================================== BSF4ooRexx adds support to the ooRexx scripting language to camouflage Modified: trunk/bsf4oorexx.dev/readme-Windows.txt =================================================================== --- trunk/bsf4oorexx.dev/readme-Windows.txt 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/bsf4oorexx.dev/readme-Windows.txt 2012-03-12 15:56:52 UTC (rev 76) @@ -1,4 +1,4 @@ -BSF4ooRexx - Installation Directions for Windows 25 Feb 2012 +BSF4ooRexx - Installation Directions for Windows 12 Mar 2012 ================================================ BSF4ooRexx adds support to the ooRexx scripting language to camouflage Modified: trunk/bsf4oorexx.dev/readmeBSF4ooRexx.txt =================================================================== --- trunk/bsf4oorexx.dev/readmeBSF4ooRexx.txt 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/bsf4oorexx.dev/readmeBSF4ooRexx.txt 2012-03-12 15:56:52 UTC (rev 76) @@ -1,4 +1,4 @@ -BSF4ooRexx, 4.10 Feb 2012, BETA +BSF4ooRexx, 4.10 Mar 2012, BETA =============================== BSF4ooRexx, version 4.10: this version makes the configuration of individual Modified: trunk/bsf4oorexx.dev/readmeBSF4ooRexx_next.txt =================================================================== --- trunk/bsf4oorexx.dev/readmeBSF4ooRexx_next.txt 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/bsf4oorexx.dev/readmeBSF4ooRexx_next.txt 2012-03-12 15:56:52 UTC (rev 76) @@ -1,4 +1,4 @@ -Additional information on BSF4ooRexx that may be interesting 2012-02-25 +Additional information on BSF4ooRexx that may be interesting 2012-03-12 =========================================================================== BSF4ooRexx is an extension to Rexx and ooRexx, consisting of an external Rexx Modified: trunk/bsf4oorexx.dev/readmeOOo.txt =================================================================== --- trunk/bsf4oorexx.dev/readmeOOo.txt 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/bsf4oorexx.dev/readmeOOo.txt 2012-03-12 15:56:52 UTC (rev 76) @@ -1,4 +1,4 @@ -The ooRexx OpenOffice.org Support (Using BSF4ooRexx), 2012-02-25 BETA +The ooRexx OpenOffice.org Support (Using BSF4ooRexx), 2012-03-12 BETA ===================================================================== This adds support for interfacing with OpenOffice/StarOffice using BSF4ooRexx, Modified: trunk/bsf4oorexx.dev/readmeOOo_next.txt =================================================================== --- trunk/bsf4oorexx.dev/readmeOOo_next.txt 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/bsf4oorexx.dev/readmeOOo_next.txt 2012-03-12 15:56:52 UTC (rev 76) @@ -1,4 +1,4 @@ -Additional information on the OpenOffice.org support that may be interesting 2012-02-25 BETA +Additional information on the OpenOffice.org support that may be interesting 2012-03-12 BETA ============================================================================================ The ooRexx OpenOffice.org (OOo) support is based on BSF4ooRexx as it uses Modified: trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/32/libBSF4ooRexx.dylib =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/32/libBSF4ooRexx.so =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/64/BSF4ooRexx.dll =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/64/libBSF4ooRexx.dylib =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/64/libBSF4ooRexx.so =================================================================== (Binary files differ) Modified: trunk/createDistributionForBSF4ooRexx4.cmd =================================================================== --- trunk/createDistributionForBSF4ooRexx4.cmd 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/createDistributionForBSF4ooRexx4.cmd 2012-03-12 15:56:52 UTC (rev 76) @@ -24,8 +24,8 @@ -set runDate=20120225 -set doc_date=2012-02-25 +set runDate=20120312 +set doc_date=2012-03-12 @rem values to use for creating the BSF jarfile set bsfDate=20090910 Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-03-12 13:52:03 UTC (rev 75) +++ trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-03-12 15:56:52 UTC (rev 76) @@ -36,11 +36,17 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 4.1.0, 2012-02-24 + * @version 4.1.0, 2012-03-12 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) */ /* + 2012-03-12, ---rgf, - now loading BSF4ooRexx DLL/so after trying to fetch the netrexx.lang.Rexx class, + such that native library can access static field "nlR_class" and fetch the class object, + if Java found it + - change scope of "bsfPrefixReturnValue" from static to instance, such that + the Rexx interpreter instances can run with different settings + 2012-02-25, ---rgf, - added methods jniNil(), jniInterpreterVersion(), jniLanguageLevel() 2012-02-24, ---rgf, - added methods jniGetLocalEnvironment(), jniGetGlobalEnvironment() @@ -262,7 +268,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "410.20120225"; + static final public String version = "410.20120312"; static final private String pkgName = "org.rexxla.bsf.engines.rexx"; @@ -306,7 +312,8 @@ * the '\t' character in Java). By default this is set to <code>false</code> to remain * backwardly compatible with older BSF4ooRexx programs. */ - static protected boolean bsfPrefixReturnValue = false; // 2008-06-22 + // static protected boolean bsfPrefixReturnValue = false; // 2008-06-22 + protected boolean bsfPrefixReturnValue = false; // 2008-06-22 // the following strings must not be changed as BSF.CLS' BSF.WRAP() routine and // other methods and routines there depend on the value *and* length (must be 3)! static final protected String OBJECT_INDICATOR_PREFIX="<O>"; // "OBJECT "; @@ -394,9 +401,6 @@ */ static { -// System.err.println("---RexxAndJava() - static: before loadLibrary---"); - System.loadLibrary( DLL_NAME ); -// System.err.println("---RexxAndJava() - static: AFTER loadLibrary---"); /* o.k., AccessibleObject got introduced in Java 1.2, we are demanding at least Java 1.4, hence this is not @@ -436,6 +440,15 @@ ; } } + + +// 2012-03-12, rgf: move loading the BSF4ooRexx library *after* loading the NetRexx class + +// System.err.println("---RexxAndJava() - static: before loadLibrary---"); + System.loadLibrary( DLL_NAME ); +// System.err.println("---RexxAndJava() - static: AFTER loadLibrary---"); + + } Modified: trunk/org/rexxla/bsf/engines/rexx/RexxConfiguration.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxExitHandler.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxHandler.class =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2012-04-17 10:29:50
|
Revision: 83 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=83&view=rev Author: orexx Date: 2012-04-17 10:29:39 +0000 (Tue, 17 Apr 2012) Log Message: ----------- 20120417 Fix for bug 3518749 (https://sourceforge.net/tracker/?func=detail&aid=3518749&group_id=400586&atid=1660873) Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/bsf4oorexx.dev/source_java/Java4Rexx.class trunk/bsf4oorexx.dev/source_java/Java4Rexx.java trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.java trunk/createDistributionForBSF4ooRexx4.cmd trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.class trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.java trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/Java4Rexx.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/Java4Rexx.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/Java4Rexx.java 2012-04-03 17:08:54 UTC (rev 82) +++ trunk/bsf4oorexx.dev/source_java/Java4Rexx.java 2012-04-17 10:29:39 UTC (rev 83) @@ -18,7 +18,7 @@ * RexxEngine.getRexxInterface()}, a * global reference is created via JNI while executing the method * {@link RexxAndJava#jniInitialize4Rexx() RexxAndJava.jniInitialize4Rexx()}, which - * calls into the BSF4ooRexx-DLL. + * calls into the BSF4ooRexx library. * * * <pre>------------------------ Apache Version 2.0 license ------------------------- @@ -43,16 +43,19 @@ */ /* changes: - - 2012-02-09, rgf: need to use try-block for createRexxInterpreterInstance() as it now throws a BSFException - 2012-02-04, rgf: cater for new (deferred) logic of creating a Rexx interpreter instance - 2012-02-06, rgf: supply new (default) RexxConfiguration object for creating Rexx interpreter instance + - 2012-02-09, rgf: need to use try-block for createRexxInterpreterInstance() as it now throws a BSFException + - 2012-04-17, rgf: change logic as there is no need for creating and terminating another Rexx + interpreter instance anymore (there was a bug too, that caused Terminate() + to not be invoked at all) */ class Java4Rexx { /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static public String version = "410.20120209"; + static public String version = "410.20120417"; /** BSF-manager to be used to get (instantiate) the Rexx engine. */ @@ -89,27 +92,12 @@ // now call into the DLL ("BSF4ooRexx.dll") in order to initialize; will set JVM in BSF4ooRexx.cc RexxAndJava raj=rxEngine.getRexxInterface(); // get the interface instance - try { - raj.createRexxInterpreterInstance(new RexxConfiguration()); // rgf, 20120204: create Rexx interpreter instance - } - catch (BSFException e) - {} - raj.jniInitialize4Rexx(); // initialize Rexx, creates another Interpreter instance + raj.jniInitialize4Rexx(); // initialize BSF4ooRexx - String root_rii_ID=raj.jniGetRexxInterpreterInstanceRoot(); // get root of interpreter instances (defined in BsfLoader()) - - String rii_ID=rxEngine.get_rii_ID(); - -// System.err.println("Java4Rexx.java: BSFGetTID()=["+raj.jniRexxGetTID()+"]"); - - if (rii_ID!=null) // RexxEngine may not represent a created Rexx interpreter instance - { - raj.jniRexxTerminateInterpreterInstance(rii_ID); // terminate spurious Rexx interpreter instance - } - + String root_rii_ID=raj.jniGetRexxInterpreterInstanceRoot(); // get primodal Rexx interpreter instance + raj.rii_ID=root_rii_ID; // now tell engine instance which Rexx interpreter instance to use rxEngine.set_rii_ID(root_rii_ID); // now tell engine instance which Rexx interpreter instance to use - } } Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2012-04-03 17:08:54 UTC (rev 82) +++ trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2012-04-17 10:29:39 UTC (rev 83) @@ -41,6 +41,10 @@ */ /* + 2012-04-17, ---rgf, - fixed a bug in createRexxInterpreterInstance() where the new RII was + not assigned to the RexxEngine if that had no RII assigned to it yet + - changed visibility for rii_ID from private to protected, such that + Java4Rexx is able to set it accordingly 2012-03-12, ---rgf, - now loading BSF4ooRexx DLL/so after trying to fetch the netrexx.lang.Rexx class, such that native library can access static field "nlR_class" and fetch the class object, if Java found it @@ -268,7 +272,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "410.20120312"; + static final public String version = "410.20120417"; static final private String pkgName = "org.rexxla.bsf.engines.rexx"; @@ -384,7 +388,8 @@ /** Contains the RexxInterpreter instance ID this engine is associated with. */ - private String rii_ID=null; + // private String rii_ID=null; + protected String rii_ID=null; /** Getter method. * @return the RexxInterpreter instance ID @@ -546,11 +551,9 @@ } - /** This native method makes sure that the function 'BSF' is - * registered with Rexx, making it thereby available to all - * Rexx and Object Rexx programs, called from Java. - */ - // public native int jniRegisterBSF (); // changed to int (---rgf, 2001-05-25) + /** This native method makes sure that the C++ library gets a hold to + * this JVM in case it does not already have a pointer to it. + */ protected native void jniSetupNativeJVMPointer (); // changed 2012-02-06, rgf @@ -6032,7 +6035,6 @@ } jniSetupNativeJVMPointer(); // make sure C++ side gets a JVM pointer - // TODO: version that allows passing Java Rexx exit and command handler arrays, if configured Object options[]=null; if (rc!=null) @@ -6045,21 +6047,12 @@ if (this.rii_ID==null) // no RII as of yet for this RAJO, set it! { - this.rii_ID=rii_ID; + this.rii_ID=tmp_rii_ID; } - // String rii_ID=jniRexxCreateInterpreterInstance(options); // create interpreter instance return tmp_rii_ID; } - - - // TODO: create jni-accessors for - // - the entire Rexx interpreter instance (all threads affected): - // Halt(), SetTrace(0|1) - // - Rexx-thread related APIs - // RexxSetHalt(), SetThreadTrace(0|1), RexxException...() - } /* javah -jni org.rexxla.bsf.engines.rexx.RexxAndJava Modified: trunk/createDistributionForBSF4ooRexx4.cmd =================================================================== --- trunk/createDistributionForBSF4ooRexx4.cmd 2012-04-03 17:08:54 UTC (rev 82) +++ trunk/createDistributionForBSF4ooRexx4.cmd 2012-04-17 10:29:39 UTC (rev 83) @@ -24,8 +24,8 @@ -set runDate=20120312 -set doc_date=2012-03-12 +set runDate=20120417 +set doc_date=2012-04-17 @rem values to use for creating the BSF jarfile set bsfDate=20090910 Modified: trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.java 2012-04-03 17:08:54 UTC (rev 82) +++ trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.java 2012-04-17 10:29:39 UTC (rev 83) @@ -18,7 +18,7 @@ * RexxEngine.getRexxInterface()}, a * global reference is created via JNI while executing the method * {@link RexxAndJava#jniInitialize4Rexx() RexxAndJava.jniInitialize4Rexx()}, which - * calls into the BSF4ooRexx-DLL. + * calls into the BSF4ooRexx library. * * * <pre>------------------------ Apache Version 2.0 license ------------------------- @@ -43,16 +43,19 @@ */ /* changes: - - 2012-02-09, rgf: need to use try-block for createRexxInterpreterInstance() as it now throws a BSFException - 2012-02-04, rgf: cater for new (deferred) logic of creating a Rexx interpreter instance - 2012-02-06, rgf: supply new (default) RexxConfiguration object for creating Rexx interpreter instance + - 2012-02-09, rgf: need to use try-block for createRexxInterpreterInstance() as it now throws a BSFException + - 2012-04-17, rgf: change logic as there is no need for creating and terminating another Rexx + interpreter instance anymore (there was a bug too, that caused Terminate() + to not be invoked at all) */ class Java4Rexx { /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static public String version = "410.20120209"; + static public String version = "410.20120417"; /** BSF-manager to be used to get (instantiate) the Rexx engine. */ @@ -89,27 +92,12 @@ // now call into the DLL ("BSF4ooRexx.dll") in order to initialize; will set JVM in BSF4ooRexx.cc RexxAndJava raj=rxEngine.getRexxInterface(); // get the interface instance - try { - raj.createRexxInterpreterInstance(new RexxConfiguration()); // rgf, 20120204: create Rexx interpreter instance - } - catch (BSFException e) - {} - raj.jniInitialize4Rexx(); // initialize Rexx, creates another Interpreter instance + raj.jniInitialize4Rexx(); // initialize BSF4ooRexx - String root_rii_ID=raj.jniGetRexxInterpreterInstanceRoot(); // get root of interpreter instances (defined in BsfLoader()) - - String rii_ID=rxEngine.get_rii_ID(); - -// System.err.println("Java4Rexx.java: BSFGetTID()=["+raj.jniRexxGetTID()+"]"); - - if (rii_ID!=null) // RexxEngine may not represent a created Rexx interpreter instance - { - raj.jniRexxTerminateInterpreterInstance(rii_ID); // terminate spurious Rexx interpreter instance - } - + String root_rii_ID=raj.jniGetRexxInterpreterInstanceRoot(); // get primodal Rexx interpreter instance + raj.rii_ID=root_rii_ID; // now tell engine instance which Rexx interpreter instance to use rxEngine.set_rii_ID(root_rii_ID); // now tell engine instance which Rexx interpreter instance to use - } } Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-04-03 17:08:54 UTC (rev 82) +++ trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-04-17 10:29:39 UTC (rev 83) @@ -41,6 +41,10 @@ */ /* + 2012-04-17, ---rgf, - fixed a bug in createRexxInterpreterInstance() where the new RII was + not assigned to the RexxEngine if that had no RII assigned to it yet + - changed visibility for rii_ID from private to protected, such that + Java4Rexx is able to set it accordingly 2012-03-12, ---rgf, - now loading BSF4ooRexx DLL/so after trying to fetch the netrexx.lang.Rexx class, such that native library can access static field "nlR_class" and fetch the class object, if Java found it @@ -268,7 +272,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "410.20120312"; + static final public String version = "410.20120417"; static final private String pkgName = "org.rexxla.bsf.engines.rexx"; @@ -384,7 +388,8 @@ /** Contains the RexxInterpreter instance ID this engine is associated with. */ - private String rii_ID=null; + // private String rii_ID=null; + protected String rii_ID=null; /** Getter method. * @return the RexxInterpreter instance ID @@ -546,11 +551,9 @@ } - /** This native method makes sure that the function 'BSF' is - * registered with Rexx, making it thereby available to all - * Rexx and Object Rexx programs, called from Java. - */ - // public native int jniRegisterBSF (); // changed to int (---rgf, 2001-05-25) + /** This native method makes sure that the C++ library gets a hold to + * this JVM in case it does not already have a pointer to it. + */ protected native void jniSetupNativeJVMPointer (); // changed 2012-02-06, rgf @@ -6032,7 +6035,6 @@ } jniSetupNativeJVMPointer(); // make sure C++ side gets a JVM pointer - // TODO: version that allows passing Java Rexx exit and command handler arrays, if configured Object options[]=null; if (rc!=null) @@ -6045,21 +6047,12 @@ if (this.rii_ID==null) // no RII as of yet for this RAJO, set it! { - this.rii_ID=rii_ID; + this.rii_ID=tmp_rii_ID; } - // String rii_ID=jniRexxCreateInterpreterInstance(options); // create interpreter instance return tmp_rii_ID; } - - - // TODO: create jni-accessors for - // - the entire Rexx interpreter instance (all threads affected): - // Halt(), SetTrace(0|1) - // - Rexx-thread related APIs - // RexxSetHalt(), SetThreadTrace(0|1), RexxException...() - } /* javah -jni org.rexxla.bsf.engines.rexx.RexxAndJava This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2012-04-17 12:35:15
|
Revision: 84 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=84&view=rev Author: orexx Date: 2012-04-17 12:35:03 +0000 (Tue, 17 Apr 2012) Log Message: ----------- 20120417 Added protected set_rii_ID() to RexxAndJava (reverted rii_ID field to be private), such that Java4Rexx can still set the reference to the Rexx interpreter instance; this way the implementation is orthogonal to RexxEngine. Modified Paths: -------------- trunk/bsf4oorexx.dev/source_java/Java4Rexx.class trunk/bsf4oorexx.dev/source_java/Java4Rexx.java trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.java trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.class trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.java trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java Modified: trunk/bsf4oorexx.dev/source_java/Java4Rexx.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/Java4Rexx.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/Java4Rexx.java 2012-04-17 10:29:39 UTC (rev 83) +++ trunk/bsf4oorexx.dev/source_java/Java4Rexx.java 2012-04-17 12:35:03 UTC (rev 84) @@ -91,12 +91,11 @@ // the Java side // now call into the DLL ("BSF4ooRexx.dll") in order to initialize; will set JVM in BSF4ooRexx.cc - RexxAndJava raj=rxEngine.getRexxInterface(); // get the interface instance + RexxAndJava raj=rxEngine.getRexxInterface(); // get the RexxAndJava (i.e. interface) instance + raj.jniInitialize4Rexx(); // initialize BSF4ooRexx (will cache interface instance) - raj.jniInitialize4Rexx(); // initialize BSF4ooRexx - - String root_rii_ID=raj.jniGetRexxInterpreterInstanceRoot(); // get primodal Rexx interpreter instance - raj.rii_ID=root_rii_ID; // now tell engine instance which Rexx interpreter instance to use + String root_rii_ID=raj.jniGetRexxInterpreterInstanceRoot(); // get reference to Rexx interpreter instance + raj.set_rii_ID(root_rii_ID); // now tell engine instance which Rexx interpreter instance to use rxEngine.set_rii_ID(root_rii_ID); // now tell engine instance which Rexx interpreter instance to use } } Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2012-04-17 10:29:39 UTC (rev 83) +++ trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2012-04-17 12:35:03 UTC (rev 84) @@ -43,8 +43,9 @@ /* 2012-04-17, ---rgf, - fixed a bug in createRexxInterpreterInstance() where the new RII was not assigned to the RexxEngine if that had no RII assigned to it yet - - changed visibility for rii_ID from private to protected, such that - Java4Rexx is able to set it accordingly + - added protected void set_rii_ID(String rii_ID) to allow Java4Rexx to + set the reference to the Rexx interpreter instance that invoked it + 2012-03-12, ---rgf, - now loading BSF4ooRexx DLL/so after trying to fetch the netrexx.lang.Rexx class, such that native library can access static field "nlR_class" and fetch the class object, if Java found it @@ -388,8 +389,7 @@ /** Contains the RexxInterpreter instance ID this engine is associated with. */ - // private String rii_ID=null; - protected String rii_ID=null; + private String rii_ID=null; /** Getter method. * @return the RexxInterpreter instance ID @@ -400,7 +400,15 @@ return rii_ID; } + /** Setter method. Only meant to be used by Java4Rexx.java. + */ + protected void set_rii_ID(String rii_ID) + { + this.rii_ID=rii_ID; + } + + /** Load the DLL, which allows interfacing Java with Rexx or Object Rexx, determines * whether setting accessibility rights is supported. */ Modified: trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.java 2012-04-17 10:29:39 UTC (rev 83) +++ trunk/org/rexxla/bsf/engines/rexx/Java4Rexx.java 2012-04-17 12:35:03 UTC (rev 84) @@ -91,12 +91,11 @@ // the Java side // now call into the DLL ("BSF4ooRexx.dll") in order to initialize; will set JVM in BSF4ooRexx.cc - RexxAndJava raj=rxEngine.getRexxInterface(); // get the interface instance + RexxAndJava raj=rxEngine.getRexxInterface(); // get the RexxAndJava (i.e. interface) instance + raj.jniInitialize4Rexx(); // initialize BSF4ooRexx (will cache interface instance) - raj.jniInitialize4Rexx(); // initialize BSF4ooRexx - - String root_rii_ID=raj.jniGetRexxInterpreterInstanceRoot(); // get primodal Rexx interpreter instance - raj.rii_ID=root_rii_ID; // now tell engine instance which Rexx interpreter instance to use + String root_rii_ID=raj.jniGetRexxInterpreterInstanceRoot(); // get reference to Rexx interpreter instance + raj.set_rii_ID(root_rii_ID); // now tell engine instance which Rexx interpreter instance to use rxEngine.set_rii_ID(root_rii_ID); // now tell engine instance which Rexx interpreter instance to use } } Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-04-17 10:29:39 UTC (rev 83) +++ trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2012-04-17 12:35:03 UTC (rev 84) @@ -43,8 +43,8 @@ /* 2012-04-17, ---rgf, - fixed a bug in createRexxInterpreterInstance() where the new RII was not assigned to the RexxEngine if that had no RII assigned to it yet - - changed visibility for rii_ID from private to protected, such that - Java4Rexx is able to set it accordingly + - added protected void set_rii_ID(String rii_ID) to allow Java4Rexx to + set the reference to the Rexx interpreter instance that invoked it 2012-03-12, ---rgf, - now loading BSF4ooRexx DLL/so after trying to fetch the netrexx.lang.Rexx class, such that native library can access static field "nlR_class" and fetch the class object, if Java found it @@ -388,8 +388,7 @@ /** Contains the RexxInterpreter instance ID this engine is associated with. */ - // private String rii_ID=null; - protected String rii_ID=null; + private String rii_ID=null; /** Getter method. * @return the RexxInterpreter instance ID @@ -400,7 +399,15 @@ return rii_ID; } + /** Setter method. Only meant to be used by Java4Rexx.java. + */ + protected void set_rii_ID(String rii_ID) + { + this.rii_ID=rii_ID; + } + + /** Load the DLL, which allows interfacing Java with Rexx or Object Rexx, determines * whether setting accessibility rights is supported. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2012-06-15 15:32:49
|
Revision: 105 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=105&view=rev Author: orexx Date: 2012-06-15 15:32:40 +0000 (Fri, 15 Jun 2012) Log Message: ----------- 20120615 Preparing release version. Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2013-01-06 15:53:31
|
Revision: 129 http://bsf4oorexx.svn.sourceforge.net/bsf4oorexx/?rev=129&view=rev Author: orexx Date: 2013-01-06 15:53:21 +0000 (Sun, 06 Jan 2013) Log Message: ----------- 20130106 Various updates linked to creating the installation package. Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/bsf4oorexx.dev/information/ReleaseNotes.txt trunk/com/sun/star/script/framework/provider/oorexx/template.rxo trunk/createDistributionForBSF4ooRexx4.cmd trunk/org/rexxla/bsf/RexxDispatcher.class trunk/org/rexxla/bsf/RexxDispatcher.java trunk/org/rexxla/bsf/engines/rexx/MethodForSuperData.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.class trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.java trunk/org/rexxla/bsf/engines/rexx/TransformationData.class Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/information/ReleaseNotes.txt =================================================================== --- trunk/bsf4oorexx.dev/information/ReleaseNotes.txt 2013-01-06 15:26:25 UTC (rev 128) +++ trunk/bsf4oorexx.dev/information/ReleaseNotes.txt 2013-01-06 15:53:21 UTC (rev 129) @@ -1,12 +1,13 @@ ---- Rexx external function package "BSF4ooRexx", status: release, 04 Dec 2010 --- +--- Rexx external function package "BSF4ooRexx" --- BSF4ooRexx is a package for the easy to learn, yet powerful scripting language ooRexx (http://www.ooRexx.org) which makes Java available to ooRexx, and ooRexx available to Java. - ooRexx programmers become able to address all of the Java classes and + -> ooRexx programmers become able to address all of the Java classes and Java objects in their runtime-environment as ooRexx classes and ooRexx - objects. + objects. (Using the ooRexx package BSF.CLS camouflages all of Java as if + it was the dynamic, case-insensitive programming language ooRexx!) - ooRexx programs become able to implement Java interfaces or abstract classes directly in ooRexx. @@ -18,75 +19,33 @@ - and much more... - Java programs can invoke ooRexx programs and even send messages directly - to ooRexx objects. + --- -Download location: + -> Java/NetRexx programmers please note: - - <http://wi.wu.ac.at/rgf/rexx/bsf4oorexx/current> + Java programs can invoke ooRexx programs and even send messages from Java + directly to ooRexx objects, intercept and anaylze Rexx conditions, create + multiple and even differently configured ooRexx interpreters, and even + supply ooRexx exit and command handlers implemented in Java! Java/NetRexx + coders please see the Javadocs and the installed samples in samples/Java or + samples/NetRexx.) - - Installation archive name: BSF4ooRexx_install.zip - -Installation: - - - unzip the archive "BSF4ooRexx_install.zip", go into the folder - "bsf4oorexx\installation\windows" or "bsf4oorexx/installation/linux" - - - double-click on "install.cmd" (Windows) or "install.sh" (Linux) - -Most important new/updated/improved features of this version: - - - double-click installation, re-installation and uninstallation of - BSF4ooRexx, making it possible for end-users to carry out these: - - - installation package will be copied to %ProgramFiles% (Windows) - resp. /opt/BSF4ooRexx (Linux) and the installation will start from - there - - - full desktop integration on Windows and Linux making it for the - first time possible to start BSF4ooRexx programs by double-clicking - in the Explorer interface; - - - running any Rexx scripts with "RexxPaws" such that the terminal - window remains open for the user to see the console output; - - - reinstallation, uninstallation of BSF4ooRexx and additional information - is now available via the GUI's menu system; - - - OpenOffice.org (OOo) extension is now packaged as an OXT-file and - allows for receiving update information automatically; - - - OpenOffice.org (OOo) extension is now packaged as an OXT-file and - allows for receiving update information automatically; - - - OOo support for the nifty ooRexx utility "UNO_API_info.rxo" for - any OOo language (via the OOo dispatch interface); - - - and numerous additional improvements. - - Known problems: - - Windows: none + - none - - Linux: - it may be the case that ooRexx 4.0.1 cannot run OOo scripts - from the command line; later versions (starting with revision 6133) - of ooRexx have this bug fixed and can be downloaded from - <http://build.oorexx.org>; alternatively, you may download the - appropriate ooRexx interpreter for your Linux from the subdirectory - "http://wi.wu.ac.at/rgf/rexx/bsf4oorexx/archive/2010/2010-08-30/linux-oorexx-6135" +Support: - - it may be the case that the "BSF4ooRexx" application menu is - not created immediately under the "Application" menu, which causes - the BSF4ooRexx menu options to be listed in the "Others" menu; in - this case just logoff and logon to cause the "BSF4ooRexx" menu to - be displayed on its own + - BSF4ooRexx Sourceforge home: <https://sourceforge.net/projects/bsf4oorexx/> -Support: + - mailing lists at <https://sourceforge.net/mail/?group_id=400586&source=navbar> - - Newsgroup <news:comp.lang.rexx> - RexxLA member's mailing list, cf. <http://www.RexxLA.org> + - Newsgroup <news:comp.lang.rexx> + - ooRexx home: <http://www.ooRexx.org>, <https://sourceforge.net/projects/oorexx/> + + Rony G. Flatscher, Wien/Vienna, Austria, Europe Modified: trunk/com/sun/star/script/framework/provider/oorexx/template.rxo =================================================================== --- trunk/com/sun/star/script/framework/provider/oorexx/template.rxo 2013-01-06 15:26:25 UTC (rev 128) +++ trunk/com/sun/star/script/framework/provider/oorexx/template.rxo 2013-01-06 15:53:21 UTC (rev 129) @@ -1,4 +1,4 @@ -/* ooRexx (http://www.ooRexx.org) template, version: 2011-04-10, Rony G. Flatscher */ +/* ooRexx (http://www.ooRexx.org) template, version: 2012-10-23, Rony G. Flatscher */ /* The following ooRexx code realizes an OOo macro that can be run against each OOo document type. It demonstrates how to get the document object and determine @@ -36,7 +36,7 @@ do xContext=scriptContext~getComponentContext /* get the context (a XComponentContext) object */ xDesktop=scriptContext~getDesktop /* get the desktop (a XDesktop) object */ - oDoc=getDocument(scriptContext~getDocument) /* get the document service (a XModel) object */ + oDoc=getDocument(scriptContext,scriptContext~getDocument) /* get the document service (a XModel) object */ end else /* this program was called from outside of OOo, e.g. from the commandline */ do @@ -136,7 +136,7 @@ /* OOo >= 3.0: get the invocation context (a XScriptInvocationContext) object; if not .nil, then use this document instead of the result of scriptContext~getDocument! */ ::routine getDocument - use arg oDoc + use arg scriptContext,oDoc signal on any xInvocationContext=scriptContext~getInvocationContext if xInvocationContext<>.nil then /* this script got invoked for a different document*/ Modified: trunk/createDistributionForBSF4ooRexx4.cmd =================================================================== --- trunk/createDistributionForBSF4ooRexx4.cmd 2013-01-06 15:26:25 UTC (rev 128) +++ trunk/createDistributionForBSF4ooRexx4.cmd 2013-01-06 15:53:21 UTC (rev 129) @@ -24,8 +24,8 @@ -set runDate=20120618 -set doc_date=2012-06-18 +set runDate=20130106 +set doc_date=2013-01-06 @rem values to use for creating the BSF jarfile set bsfDate=20090910 Modified: trunk/org/rexxla/bsf/RexxDispatcher.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/RexxDispatcher.java =================================================================== --- trunk/org/rexxla/bsf/RexxDispatcher.java 2013-01-06 15:26:25 UTC (rev 128) +++ trunk/org/rexxla/bsf/RexxDispatcher.java 2013-01-06 15:53:21 UTC (rev 129) @@ -191,7 +191,7 @@ System.gc(); // run the garbage collector, such that Java objects with finalizers get a chance to run System.runFinalization(); // run outstanding finalizers (e.g. from RexxProxy objects), if any - ap.terminate(); // terminate Rexx engine, will inhibit callbacks from Java to Rexx + ap_rexx.terminate(); // terminate Rexx engine, will inhibit callbacks from Java to Rexx System.exit(0); // make sure JVM does not crash (there was a bug, if using JNI) } } Modified: trunk/org/rexxla/bsf/engines/rexx/MethodForSuperData.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2013-01-06 15:26:25 UTC (rev 128) +++ trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2013-01-06 15:53:21 UTC (rev 129) @@ -21,7 +21,7 @@ * * * <pre>------------------------ Apache Version 2.0 license ------------------------- - * Copyright (C) 2001-2012 Rony G. Flatscher + * Copyright (C) 2001-2013 Rony G. Flatscher * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,11 +36,17 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 4.1.0, 2012-04-17 + * @version 4.1.0, 2013-01-04 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) */ /* + 2013-01-04, ---rgf, - use alternative code to fix bug https://sourceforge.net/tracker/?func=detail&aid=3599351&group_id=400586&atid=1660873 + + 2013-01-03, ---rgf, - fix bug https://sourceforge.net/tracker/?func=detail&aid=3599351&group_id=400586&atid=1660873 + + 2012-11-01, ---rgf, - fix bug https://sourceforge.net/tracker/?func=detail&aid=3581957&group_id=400586&atid=1660873 + 2012-04-17, ---rgf, - fixed a bug in createRexxInterpreterInstance() where the new RII was not assigned to the RexxEngine if that had no RII assigned to it yet - added protected void set_rii_ID(String rii_ID) to allow Java4Rexx to @@ -274,7 +280,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "410.20120417"; + static final public String version = "410.20130104"; static final private String pkgName = "org.rexxla.bsf.engines.rexx"; @@ -370,6 +376,16 @@ Hashtable orxReferences = new Hashtable(); + /** Field used, if System.identityHashCode() returns duplicate values in method + * {@link #makeBeanName(Object o)}, to allow adding a unique number to make the + * resulting identifying string unique. + * + * @since 2012-11-01 + * @author Rony G. Flatscher + */ + int spilloverCounter=0; + + /* * Allows storing successfully reflected methods. If a method is invoked * on a bean, it is being retrieved via reflection, a relatively slow process. * This Hashtable allows re-usage of method objects for invocation purposes. @@ -3458,6 +3474,7 @@ // rgf, 2009-07-13, if a class object in hand, then in the first round look for // static methods only boolean lookForStaticMethodsOnly= (bean instanceof Class); + c = (lookForStaticMethodsOnly ? (Class) bean : bean.getClass() ); if (bDebug) @@ -3632,6 +3649,7 @@ if (bDebug) System.err.println("\t\ttmpClass=["+tmpClass+"] tmpSuperClass: ["+tmpSuperClass+"] bLooking=["+bLooking+"] args.length=["+args.length+"]..."); + // an interface class has null as its root class bStopLooking=(bLooking && (tmpClass==Object.class || tmpSuperClass==null)); if (bStopLooking) // root class, method not found @@ -3661,9 +3679,17 @@ } // ---rgf, 2006-02-05: need to look for method in java.lang.Class ? - if ((startClass instanceof Class) && (startClass!=Class.class)) + if ( (startClass instanceof Class) && (startClass!=Class.class + || (tmpSuperClass==null && lookForStaticMethodsOnly==true)) // an interface class in hand? + ) { if (bDebug) System.err.println("---> ---> looking in class-object of bean! startClass=["+startClass+"], startClass.getClass()=["+startClass.getClass()+"]"); + // an interface class, now look for its instance methods + if (tmpSuperClass==null && lookForStaticMethodsOnly==true) + { + lookForStaticMethodsOnly=false; + } + bLooking=true; tmpClass=startClass.getClass(); startClass=tmpClass; @@ -5242,30 +5268,39 @@ - /** This method creates a unique string value for the passed in object. + /** This method creates an identifer (unique) string value for the passed in object. * - * the code to create the unique name is the same - * as the documented "Object.hashCode()": - * <br> - * <code>o.getClass().getName() + "@" - * + Integer.toHexString(o.hashCode())</code>. - * * @param o the object for which a unique string value should be created * * @return <code>null</code>, if the argument was <code>null</code>, - * else a String, uniquely denoting the object + * else a String, identifying (uniquely) the object for use with the BSF registry */ public String makeBeanName(Object o) { + final boolean bDebug= // if true, show debug infos + false; + if (o==null) { return null; } + // rgf, 2009-07-13: all method objects of the same name have the same hashCode() (does // not apply to constructor objects only!), hence need for using // System.identityHashCode() instead - return "" + o.getClass().getName() + '@' + Integer.toHexString( System.identityHashCode(o) ); + String beanName="" + o.getClass().getName() + '@' + Integer.toHexString( System.identityHashCode(o) ); + + // rgf, 2012-11-01: handle case where System.identityHashCode() returns duplicates + Object olb=mgr.lookupBean(beanName); // check whether an existing object is identical to the one we got + + if (olb!=null && o!=olb) // oops, we got a duplicate identityHashCode for the same class! + { // make it into an identifier (unique) string + beanName=beanName+"_"+Integer.toHexString(++spilloverCounter); +if (bDebug) System.err.println("makeBeanName(): duplicate identityHashCode, spilloverCounter used, now beanName=["+beanName+"]"); + } + + return beanName; } Modified: trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.java 2013-01-06 15:26:25 UTC (rev 128) +++ trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.java 2013-01-06 15:53:21 UTC (rev 129) @@ -65,6 +65,8 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.Attribute; @@ -107,7 +109,7 @@ * to explicitly invoke masked methods in the super (extended) class. * * <pre>------------------------ Apache Version 2.0 license ------------------------- - * Copyright (C) 2009 Rony G. Flatscher + * Copyright (C) 2009, 2013 Rony G. Flatscher * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -123,11 +125,19 @@ * ----------------------------------------------------------------------------- </pre> * * @author Rony G. Flatscher (<a href="http://www.wu.ac.at">WU Vienna </a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) - * @version 1.0 + * @version 1.1 * @since 2009-07-29 */ /* + 2013-01-03, rgf: - fixed a bug when extending an abstract class that possesses unimplemented + interface methods like javax.swing.AbstractAction; the fix now correctly + implements any declared abstract methods from interfaces (including any + of its super interfaces) that are not implemented in the abstract class + + - fixed wrong setting that caused concrete methods to be created, although + the documentation explained that only abstract methods get created + 2009-09-06, rgf: supply class object in static method invocations for callbacks, such that invoked Rexx method can directly address the class object for "_forwardToSuper" static methods @@ -144,7 +154,7 @@ */ protected ClassVisitor cv; - final static protected boolean bDebugClassVisitor=false; // true; + final static protected boolean bDebugClassVisitor =false; // true; final static protected boolean bDebugMethodVisitor=false; // true; final static String thisPgmName="RexxExtendClass"; @@ -273,9 +283,10 @@ /** - * Constructs a new {@link ClassAdapter} object. This mode of operation will - * only implement abstract methods which will be executed by the RexxProxy. + * Constructs a new {@link ClassAdapter} object. * + * <p>This constructor will only create proxy methods for public abstract methods. + * * @param cv the class visitor to which this adapter must delegate calls. */ public RexxExtendClass(final ClassVisitor cv) @@ -288,9 +299,7 @@ /** * Constructs a new {@link ClassAdapter} object. This mode of operation will - * implement public abstract methods which will be executed by the RexxProxy. In addition - * it creates proxy methods for each Java method that carries a name as supplied - * in the <code>methodNamesToAdd</code> array. + * implement public abstract methods which will be executed by the RexxProxy. * * <p>This constructor will only create proxy methods for public abstract methods. * @@ -326,14 +335,28 @@ * in the <code>methodNamesToAdd</code> array. If the <code>methodNamesToAdd</code> array * is <code>null</code> or empty, then all public methods will have a proxy method created for. * + * <p>If concrete methods get proxied, then there will be new methods added by the same name + * extended with the string "_forwardToSuper", which allows one to reach those concrete methods + * from ooRexx. If so, then the ooRexx handler needs to fetch the entry + * <code>"JAVAOBJECT"</code> from the <code>slotDir</code> argument + * (an ooRexx directory), which gets added as the last argument for ooRexx when callinb back + * from Java to ooRexx. + * * @param cv the class visitor to which this adapter must delegate calls. * @param newClassName determines new name of the class, if null, an attempt to create * a unique name is undertaken * @param newClassVersion if >0 overrides the source class' version + * * @param methodNamesToAdd a String array containing (caseless) method names for * which proxy methods should be created; if callbacks to the RexxProxy are desired * from constructors, then they need to be added to this String array under the name * "<init>" (the Java internal name of constructors). + * + * <p>If all methods should be proxied without explicitly denoting them, then supply + * a String array of size <code>0</code>. + * + * <p>If this parameter is <code>null</code>, then proxy methods will get created + * for public abstract methods only. */ public RexxExtendClass(final ClassVisitor cv, final String newClassName, @@ -346,23 +369,25 @@ ", newClassVersion="+pp(""+newClassVersion)+ ", methodNamesToAdd)..."); - if (methodNamesToAdd==null || methodNamesToAdd.length==0) + if (methodNamesToAdd!=null) // (methodNamesToAdd==null || methodNamesToAdd.length==0) { - tranData.bProcessAllMethods=true; // create proxies for all methods! - } - else // add methods to proxy to appropriate HashSet, turn into uppercase - { - for (int i=0; i<methodNamesToAdd.length; i++) + if (methodNamesToAdd.length==0) // create proxies for all methods! { -if (bDebugClassVisitor) System.out.println("--> ---> RexxExtendClass(cv, newClassName, ...): i="+i+" ["+methodNamesToAdd[i]+"]"); - tranData.simpleMethodNamesToAdd.add(methodNamesToAdd[i].toUpperCase()); + tranData.bProcessAllMethods=true; // create proxies for all methods! } + + else // add methods to proxy to appropriate HashSet, turn into uppercase + { + for (int i=0; i<methodNamesToAdd.length; i++) + { + tranData.simpleMethodNamesToAdd.add(methodNamesToAdd[i].toUpperCase()); + } + } } } - // ClassVisitor method public void visit( final int version, @@ -376,6 +401,13 @@ if (bDebugClassVisitor) System.err.println("--> "+"visit(version="+version+", access="+access+ ", name="+name+", signature="+signature+", superName="+superName+ ", [] interfaces="+interfaces+")\n\tnewClassVersion="+tranData.newClassVersion); +if (bDebugClassVisitor && interfaces!=null) +{ + for (int i=0; i<interfaces.length;i++) + { + System.err.println(" - interfaces["+i+"/"+interfaces.length+"]=["+interfaces[i]+"]"); + } +} if ((access & ACC_INTERFACE)!=0) // an interface in hand { @@ -554,6 +586,17 @@ if (bDebugMethodVisitor) System.err.println("\t---> desc=["+getMethodAccessAsString(access)+"]"); + // don't process concrete methods, except for constructors + if ( tranData.bProcessAllMethods==false && + (access & ACC_ABSTRACT)==0 && + !name.equals("<init>") + ) + { + +if (bDebugMethodVisitor) System.err.println("\tNOT PROCESSING! (not abstract)"); + return null; + } + if ((access & ACC_PUBLIC)==0) // don't process non-public methods { @@ -755,6 +798,8 @@ workAddMethods(cv); // add instance and static methods we need workAddClinitMethod(cv); // add class initializer code + workAddInterfaceMethods(cv); // 2013-01-02, rgf: add abstract methods from interfaces, if needed + // if methods got masked, create slot methods to super for (int i=0; i<tranData.listOfMethodsForwardToSuper.size(); i++) { @@ -2154,6 +2199,134 @@ } + + + /** Create methods for an abstract class which defines interfaces with (partially) unimplemented methods. + * At this point any abstract method declared in the class itself was already processed. + * @since 2013-01-03 + */ + void workAddInterfaceMethods(ClassVisitor cv) + { +if (bDebugMethodVisitor) System.err.println("\t===> "+"workAddInterfaceMethods()..."); + if ((tranData.srcClassAccess & ACC_ABSTRACT) == 0 ) + { +if (bDebugMethodVisitor) System.err.println("\t\t"+"--- class in hand is not ABSTRACT, hence nothing to process ..."); + return; + } + + if (tranData.srcClassInterfaces==null || tranData.srcClassInterfaces.length==0 ) + { +if (bDebugMethodVisitor) System.err.println("\t\t"+"--- nothing to process (no interfaces defined)..."); + return; + } + + Class wrkClz=null; + try { + wrkClz=Class.forName(tranData.srcClassName.replace('/','.')); + } + catch (Exception e) { // TODO: create a RuntimeError instead ? + return; + } + + String [] interfaces=tranData.srcClassInterfaces; // get interface names (may have superclasses) + + for (int i=0; i<interfaces.length; i++) + { + String interfaceClzName=interfaces[i].replace('/','.'); + + Class tmpInterfaceClz=null; + try { + tmpInterfaceClz=Class.forName(interfaceClzName); // load Class for interrogation + } + catch (Exception e) { + throw new RuntimeException(thisPgmName+": cannot load interface \""+interfaceClzName+"\""); + } + + processInterface(tmpInterfaceClz, wrkClz); + } + } + + /** For each interface get the defined methods, if no concrete implementations exist + * nor proxy methods got created so far, then add that method to the extended class. + * Recursively process super interfaces, if any. + */ + private void processInterface(Class clzInt, Class wrkClz) + { +if (bDebugMethodVisitor) System.err.println("\t\t"+"--- processing interface ["+clzInt.getName()+"] ..."); + // do the work + + Method [] meths=clzInt.getDeclaredMethods(); + for (int k=0; k<meths.length; k++) + { + Method m =meths[k]; + String name =m.getName(); + String desc =Type.getMethodDescriptor(m); + String fullName=name+desc; + +if (bDebugMethodVisitor) System.err.println("\t\t\t"+clzInt+" - meths["+k+"/"+meths.length+"]: ["+m+"]"); + + if (tranData.fullMethodNamesAdded.contains(fullName)) // method already created + { +if (bDebugMethodVisitor) System.err.println("\t\t\t\t method got implemented in this run."); + continue; + } + + Method mDeclared=null; // does base class have the method implemented concretely? + try + { + mDeclared=wrkClz.getDeclaredMethod(name, m.getParameterTypes()); + } + catch (Exception e) {} + + // if method exists, but is not abstract, skip + if (mDeclared!=null && (!Modifier.isAbstract(mDeclared.getModifiers()))) + { +if (bDebugMethodVisitor) System.err.println("\t\t\t\t method already implemented in base class."); + continue; + } + + // if (tranData.fullMethodNamesAdded.contains(fullName)==false) // method not implemented + { + int modifiers=m.getModifiers(); + + // if exeption types defined, get and supply them + String [] exceptions=null; + Class [] clzExceptions=m.getExceptionTypes(); + + if (clzExceptions.length>0) + { + exceptions= new String [clzExceptions.length]; + for (int i=0; i<clzExceptions.length; i++) + { + exceptions[i]=clzExceptions[i].getName().replace('.', '/'); + } + } + + // invoke visitMethod(...) directly, it will use the ClassVisitor "cv" instance to create the method + // TODO: when Java baseline moves from 1.4 to 1.5 and higher, check out whether to supply a signature + this.visitMethod(modifiers, name, desc, null, exceptions); + } + } + + Class clzInterfaces[]=clzInt.getInterfaces(); // get super interfaces, if any + + if (clzInterfaces==null || clzInterfaces.length==0) // no super interface classes available anymore? + { + return; + } + + for (int i=0;i<clzInterfaces.length;i++) // iterate over all interface classes + { + processInterface(clzInterfaces[i], wrkClz); // recurse over super interfaces + } + } + + + + + + + // return methods as string public static String getMethodAccessAsString(int access) { Modified: trunk/org/rexxla/bsf/engines/rexx/TransformationData.class =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2013-06-10 16:44:11
|
Revision: 141 http://sourceforge.net/p/bsf4oorexx/code/141 Author: orexx Date: 2013-06-10 16:44:09 +0000 (Mon, 10 Jun 2013) Log Message: ----------- Prework for creating a new beta archive (includes new binaries for 32 and 64 bit Windows and Linux, MacOSX built next). Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/bsf4oorexx.dev/ToDo.txt trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll trunk/bsf4oorexx.dev/source_cc/32/libBSF4ooRexx.so trunk/bsf4oorexx.dev/source_cc/64/BSF4ooRexx.dll trunk/bsf4oorexx.dev/source_cc/64/libBSF4ooRexx.so trunk/bsf4oorexx.dev/source_java/RexxAndJava.class trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/read-me-UNO_API_info.html trunk/org/apache/bsf/BSFManager$1.class trunk/org/apache/bsf/BSFManager$2.class trunk/org/apache/bsf/BSFManager$3.class trunk/org/apache/bsf/BSFManager$4.class trunk/org/apache/bsf/BSFManager$5.class trunk/org/apache/bsf/BSFManager$6.class trunk/org/apache/bsf/BSFManager$7.class trunk/org/apache/bsf/BSFManager$8.class trunk/org/apache/bsf/BSFManager.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxEngine.class trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/ToDo.txt =================================================================== --- trunk/bsf4oorexx.dev/ToDo.txt 2013-06-10 11:38:53 UTC (rev 140) +++ trunk/bsf4oorexx.dev/ToDo.txt 2013-06-10 16:44:09 UTC (rev 141) @@ -6,12 +6,15 @@ 2012-02-25, ---rgf +----------------------------- + - check on AOO MacOSX: - oxt is installable for "user", but not for "shared" ! 2012-11-18, ---rgf +----------------------------- - remove Janino eventually and use asm exclusively; it's faster and has support for creating Android dex renderings on-the-fly of the Java byte code; @@ -21,3 +24,70 @@ to make it address the Android Dalvik VM 2013-01-06, ---rgf + +----------------------------- + +- adapt setupOOo.rex to honor the upcoming AOO 4.0 locations and Windows registry keys + + -------- Original Message -------- + Subject: Re: Adapt the naming of our project deliverables - "OpenOffice.org" --> "Apache OpenOffice" + Date: Thu, 10 Jan 2013 15:56:02 +0100 + From: Oliver-Rainer Wittmann <orw...@go...> + Reply-To: de...@op... + To: de...@op... + + + Hi, + + On 10.01.2013 11:55, Rony G. Flatscher wrote: + > Hi Oliver-Rainer, + > + > On 10.01.2013 11:23, Oliver-Rainer Wittmann wrote: + >> I have finished the renaming from "OpenOffice.org" to "Apache OpenOffice" - see issue 121388. + >> + >> Beside corresponding changes in the user interface this change has impact on the following + >> important and critical stuff: + >> - folder/directory names + >> - package names + >> - Windows registry key names and values + >> - ... + >> + >> As the folder/directory path to the user profile is also changed, the user profile of a former + >> installed AOO (or OOo) version is not taken over. + > for installation script purposes of add-ons etc., where can one find the concrete strings for + > folder/directory names on the various operating system platforms and the Windows registry key names + > and values? + > + + Unfortunately, there is no single place in the source code. I also had not the + resources to clean this up during the renaming work - hint, hint, hint :-) + + Please have a look at issue 121388, the wiki page referenced in one of the + issue's comments and the intrinsic changes I have made. + + The product installation folder is more or less a form of the $PRODUCTNAME + + [major version number]. E.g.: + - Windows: "Apache OpenOffice 3" + - Linux: "apache_openoffice3" + On Linux platforms we have also the basis installation folder. It name is found + in /main/instsetoo_native/util/openoffice.lst + + The user profile folder is more or less $PRODUCTNAME/[major version number]/ + + The Windows registry keys and values can be found in module main/scp2/ + + I hope that helps a little bit. + + Best regards, Oliver. + +2013-01-10, ---rgf + + +----------------------------- + +- Rework all old samples + - they may be unaware of the new "<S|O>" prefixes + - replace deprecated bsf.addEventListener() + - maybe add bsf.terminateRexxEngine() where currently bsf.exit is used + +2013-01-19, ---rgf Modified: trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt =================================================================== --- trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2013-06-10 11:38:53 UTC (rev 140) +++ trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2013-06-10 16:44:09 UTC (rev 141) @@ -1,4 +1,32 @@ +-------------------------------------- 2013-06-10 ---------------------------------- + +- BSF4ooRexx.cc + + - changed logic in Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniRexxTerminateInterpreterInstance + to really terminate Rexx interpreter instances (RII) with the exception of the + primodal RII, which needs to stay alive due to using it for maintaining RexxProxy + objects with Rexx collection objects in native code + +- RexxEngine.java + + - added public getter method isTerminated() + + - added "synchronized" keyword to terminate(); + note: the primodal Rexx interpreter instance is never terminated, use isTerminated() + to check for that after terminating a Rexx engine + +- BSF.CLS + + - make BSF.terminateRexxEngine() return .true, if RexxEngine got terminated, .false else + +-------------------------------------- 2013-01-07 ---------------------------------- + +- RexxDispatcher.java + + - somehow a local copy of this file was wrong, introducing an error, reordering + Rexx termination sequences + -------------------------------------- 2013-01-06 ---------------------------------- - samples\quiz1.rxj, samples\quiz2.rxj, samples\quiz3.rxj, samples\uscaps.txt Modified: trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/32/libBSF4ooRexx.so =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/64/BSF4ooRexx.dll =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/64/libBSF4ooRexx.so =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/read-me-UNO_API_info.html =================================================================== --- trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/read-me-UNO_API_info.html 2013-06-10 11:38:53 UTC (rev 140) +++ trunk/bsf4oorexx.dev/utilities/OOo/UNO_API_info/read-me-UNO_API_info.html 2013-06-10 16:44:09 UTC (rev 141) @@ -322,7 +322,7 @@ <P>The ooRexx script can be invoked directly from an ooRexx program supplying a UNO object or a UNO IDL string as an argument. In addition rendering options can be given as a second argument in form -of an array of an ooRexx directory object, where the index denotes +of an ooRexx directory object, where the index denotes the option's name and the value the desired value.</P> <P><FONT COLOR="#000000"><FONT FACE="DejaVu Sans Mono, monospace"><FONT SIZE=4><B><SPAN STYLE="background: #ffff99">"HowtoCreateApiInfo_direct.rxo":</SPAN></B></FONT></FONT></FONT></P> <PRE CLASS="western"><FONT FACE="DejaVu Sans Mono, monospace">xDesktop <FONT COLOR="#804040"><B>=</B></FONT> <FONT COLOR="#008080">UNO.createDesktop()</FONT><FONT COLOR="#804040"><B>~</B></FONT><FONT COLOR="#008080">XDesktop</FONT> <FONT COLOR="#0000ff">-- create Desktop object, query XDesktop interface</FONT></FONT> @@ -562,6 +562,6 @@ </P> <HR SIZE=2 COLOR="#000000" NOSHADE> <P><FONT COLOR="#000000"><FONT FACE="monospace">Rony G. Flatscher, -Vienna, Austria, as of 2010-08-30</FONT></FONT></P> +Vienna, Austria, as of 2010-08-30, 2013-01-10</FONT></FONT></P> </BODY> </HTML> Modified: trunk/org/apache/bsf/BSFManager$1.class =================================================================== (Binary files differ) Modified: trunk/org/apache/bsf/BSFManager$2.class =================================================================== (Binary files differ) Modified: trunk/org/apache/bsf/BSFManager$3.class =================================================================== (Binary files differ) Modified: trunk/org/apache/bsf/BSFManager$4.class =================================================================== (Binary files differ) Modified: trunk/org/apache/bsf/BSFManager$5.class =================================================================== (Binary files differ) Modified: trunk/org/apache/bsf/BSFManager$6.class =================================================================== (Binary files differ) Modified: trunk/org/apache/bsf/BSFManager$7.class =================================================================== (Binary files differ) Modified: trunk/org/apache/bsf/BSFManager$8.class =================================================================== (Binary files differ) Modified: trunk/org/apache/bsf/BSFManager.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxEngine.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java 2013-06-10 11:38:53 UTC (rev 140) +++ trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java 2013-06-10 16:44:09 UTC (rev 141) @@ -14,7 +14,7 @@ * using the RexxSAA interface. * * <pre>------------------------ Apache Version 2.0 license ------------------------- - * Copyright (C) 2001-2012 Rony G. Flatscher + * Copyright (C) 2001-2013 Rony G. Flatscher * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,7 +29,7 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 4.1.0, 20120219 + * @version 4.1.1, 20130610 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) * */ @@ -37,6 +37,10 @@ /* last change: $Revision: 546 $ $Author: rony $ $Date: 2009-10-20 20:45:19 +0200 (Tue, 20 Oct 2009) $ + 2013-06-10, ---rgf, - added public getter method isTerminated() + - added "synchronized" keyword to terminate(); + note: the primodal Rexx interpreter instance is never terminated, use isTerminated() + to check for that after terminating a Rexx engine 2012-02-19, ---rgf, - added public methods registerBean(), unregisterBean(), lookupBean() as pass-through methods for the protected RexxAndJava methods @@ -103,7 +107,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "410.20120219"; + static final public String version = "411.20130610"; /** If terminate() was invoked, then this instance must not be used anymore. */ @@ -1037,13 +1041,20 @@ /** Waits until all Rexx threads of this engine's Rexx interpreter instance peer have terminated * (using the new ooRExx 4.0 APIs); this method <em>must be</em> called from the same thread * that created the Rexx interpreter instance (i.e. the thread that created this instance of - * the RexxEngine). + * the RexxEngine). It is not possible to terminate the primodal Rexx interpreter instance, use + * {@link public boolean isTerminated()} to test whether the Rexx interpreter instance of + * this {@link RexxEngine} got terminated. * * To halt all Rexx threads of this engine's Rexx interpreter instance peer use * {@link #halt()}. * */ - public void terminate() { + synchronized public void terminate() { + if (bTerminated==true) // already terminated, return + { + return; + } + bTerminated=true; // do not allow any invocations via this instance anymore if (rii_ID!=null) // if RII got created @@ -1051,8 +1062,14 @@ // this waits until all threads of the instance have finished if (bDebug) System.err.println("RexxEngine().terminate(): before jniRexxTerminateInterpreterInstance("+rii_ID+")..."); - rexxInterface.jniRexxTerminateInterpreterInstance(rii_ID); // wait for termination of all Rexx threads of this interpreter instance + int res=rexxInterface.jniRexxTerminateInterpreterInstance(rii_ID); // wait for termination of all Rexx threads of this interpreter instance + if (res==-2) // primodal RII will never get terminated, re-allow using it + { + bTerminated=false; + return; + } + if (bDebug) System.err.println("RexxEngine().terminate(): AFTER jniRexxTerminateInterpreterInstance("+rii_ID+")"); } @@ -1060,7 +1077,16 @@ super.terminate(); // now let the superclass do its work } + /** Getter method for field <code>bTerminated</code>. + * + * @return <code>true</code>, if Rexx engine got successfully terminated, <code>false</else> + */ + public boolean isTerminated() + { + return bTerminated; + } + /** * Halt (raise the <code>HALT</code> condition) all Rexx threads of this engine's peer * Rexx interperter instance (using the new ooRExx 4.0 APIs). This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2013-07-02 16:09:56
|
Revision: 156 http://sourceforge.net/p/bsf4oorexx/code/156 Author: orexx Date: 2013-07-02 16:09:52 +0000 (Tue, 02 Jul 2013) Log Message: ----------- 20130702 Reflects the refresh of the beta. Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/createDistributionForBSF4ooRexx4.cmd Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/createDistributionForBSF4ooRexx4.cmd =================================================================== --- trunk/createDistributionForBSF4ooRexx4.cmd 2013-07-02 10:23:21 UTC (rev 155) +++ trunk/createDistributionForBSF4ooRexx4.cmd 2013-07-02 16:09:52 UTC (rev 156) @@ -28,8 +28,10 @@ set doc_date=2013-06-29 @rem values to use for creating the BSF jarfile -set bsfDate=20090910 -set bsfVersion=v400 +@rem set bsfDate=20090910 +set bsfDate=20130629 +@rem set bsfVersion=v400 +set bsfVersion=v411 set bsfJarNameBin=bsf-%bsfVersion%-%bsfDate%.jar set bsfJarNameSource=bsf-%bsfVersion%-%bsfDate%-source.jar This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2014-04-05 11:48:51
|
Revision: 190 http://sourceforge.net/p/bsf4oorexx/code/190 Author: orexx Date: 2014-04-05 11:48:47 +0000 (Sat, 05 Apr 2014) Log Message: ----------- 20140405 ScriptProviderForooRexx changes (for MacOSX), commit latest binaries. Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/bsf4oorexx.dev/ScriptProviderForooRexx.author.htm trunk/bsf4oorexx.dev/ScriptProviderForooRexx.release-notes_en.txt trunk/bsf4oorexx.dev/ScriptProviderForooRexx.update.html trunk/bsf4oorexx.dev/ScriptProviderForooRexx.update.xml trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/changesOOo.txt trunk/bsf4oorexx.dev/bin/BSF.CLS trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt trunk/bsf4oorexx.dev/changesOOo.txt trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.java trunk/bsf4oorexx.dev/source_java/RexxEngine.java trunk/com/sun/star/script/framework/provider/oorexx/GlyphGutter.class trunk/com/sun/star/script/framework/provider/oorexx/PlainSourceView.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx$1$1.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx$1.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx$2.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx.java trunk/com/sun/star/script/framework/provider/oorexx/ScriptImpl.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$_ScriptProviderForooRexx.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceModel.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceModel.java trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceView.class trunk/compile_all.cmd trunk/createDistributionForBSF4ooRexx4.cmd trunk/createScriptProviderForooRexx.cmd trunk/make-docs-apache.cmd trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java trunk/org/rexxla/bsf/engines/rexx/RexxEngine.class trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/ScriptProviderForooRexx.author.htm =================================================================== --- trunk/bsf4oorexx.dev/ScriptProviderForooRexx.author.htm 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/ScriptProviderForooRexx.author.htm 2014-04-05 11:48:47 UTC (rev 190) @@ -127,7 +127,7 @@ </ul> <hr> -<div sytle="size=50%;">Last edited: 2011-04-29.</div> +<div sytle="size=50%;">Last edited: 2014-04-03.</div> Modified: trunk/bsf4oorexx.dev/ScriptProviderForooRexx.release-notes_en.txt =================================================================== --- trunk/bsf4oorexx.dev/ScriptProviderForooRexx.release-notes_en.txt 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/ScriptProviderForooRexx.release-notes_en.txt 2014-04-05 11:48:47 UTC (rev 190) @@ -1,11 +1,15 @@ ------------------ 2011-04-29 ------------ -BSF4ooRexx support for OOo, release version ""406.20110429"" +----------------- 2014-04-04 ------------ +BSF4ooRexx support for AOO, release version "450.20140404" -- This release includes the OOo update mechanism +- This release includes the AOO update mechanism -- Standalone OOo ooRexx scripts (extension ".rxo") can now be started by double-clicking +- Standalone AOO ooRexx scripts (extension ".rxo") can be started by double-clicking on them via the graphical Explorer interfaces on MacOSX, Linux and Windows, if their - icons display the superimposed OOo icon as well. + icons display the superimposed AOO icon as well. +- Added code to allow ooRexx macros on MacOSX AOO 4.0.x and 4.1.0 to execute (via + the macro editor's Run button), as these versions erroneously set the process + environment for ooRexx macros (missing PATH environment variable) + Rony G. Flatscher, Wien (Vienna), Austria, Europe Modified: trunk/bsf4oorexx.dev/ScriptProviderForooRexx.update.html =================================================================== --- trunk/bsf4oorexx.dev/ScriptProviderForooRexx.update.html 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/ScriptProviderForooRexx.update.html 2014-04-05 11:48:47 UTC (rev 190) @@ -16,66 +16,42 @@ <h2>Download Directions</h2> - <p>Download the zip-archive named <a href=".">BSF4ooRexx_install.zip (show directory with all files)</a>. + <p>Download the zip-archive for your system from + <a href="https://sourceforge.net/projects/bsf4oorexx/files/GA/">https://sourceforge.net/projects/bsf4oorexx/files/GA/</a>. + "GA" is the acronym for "general availability", i.e. release software. Pick the + subdirectory with the latest date. <h3>Update Instructions</h3> - <p>First you need to uninistall the OOo and BSF support for ooRexx, followed - by unzipping <code>BSF4ooRexx_install.zip</code> and copying the subdirectry - tree named "bsf4oorexx" over the existing subdirectory "bsf4oorexx", - running <code>rexx setupBSF.rex</code> and <code>rexx setupOOo.rex</code>, - followed by running the created installation programs (in that order) as super - user/Administrator. + <p>First you need to uninstall the OOo and BSF support for ooRexx, followed + by installing the latest package from the above download. - <h4>Uninstalling Currently Installed BSF4ooRexx</h4> - <p>Find the directory "bsf4oorexx\install" (Windows) or "bsf4oorexx/install" (Linux) - and run the following programs in the following order: + <p>Go to the <em>BSF4ooRexx</em> menu and choose <em>Installatin</em> and the + option <em>Uninstall BSF4ooRexx</em>. - <ul> - <li><code>uninstallOOo_runAsAdministrator.cmd</code> (Windows) or - <br><code>uninstallOOo_sudo.sh</code> (Unix), + <h4>Installing Latest Version</h4> - <li><code>uninstallBSF_runAsAdministrator.cmd</code> (Windows) or - <br><code>uninstallBSF_sudo.sh</code> (Unix). - </ul> - - - <h4>Installing New Version of <a href="http://sourceforge.net/projects/bsf4oorexx">BSF4ooRexx Containing the New ooRexx ScriptProvider Version forOOo</a></h4> - <ul> - <li>Download the latest version of - <a href="http://sourceforge.net/projects/bsf4oorexx/files/">BSF4ooRexx_install.zip</a> and save it locally. - (Please note, there may be graphical package installers for your operating system available as well, - which only need to be double-clicked to initiate the automatic installation!) - <p> + <li>Download the latest version for your system from + <a href="https://sourceforge.net/projects/bsf4oorexx/files/GA/">https://sourceforge.net/projects/bsf4oorexx/files/GA/</a>. - <li>Uninstall the zip archive named "BSF4ooRexx_install.zip" which will create - a subdirectory named "bsf4oorexx" containing numerous files and subdirectories. - One of these subdirectories is named "install" into which you need to change to. - <p> - - <li>Run the programs (in that order): - <br><code>rexx setupBSF.rex</code> (Windows), - <br><code>setupBSF_sudo.sh</code> (Unix), - <br>and - <br><code>rexx setupOOo.rex</code> (Windows), - <br><code>setupOOo_sudo.sh</code> (Unix). - <p> - These programs create installation and uninstallation scripts tailored to your system's - need. - - <li>Run the generated installation scripts (in that order): + <li> <ul> - <li><code>installBSF_runAsAdministrator.cmd</code> (Windows) or - <br><code>installBSF_sudo.sh</code> (Unix). - - <li><code>installOOo_runAsAdministrator.cmd</code> (Windows) or - <br><code>installOOo_sudo.sh</code> (Unix), + <li>MacOS X: download the package, in the MacOSX Download folder open the + installation volume, hover mouse over install icon, <em>klick the right mouse button (!)</em> + and chose <em>open</em> and install. + <p> + <li>Windows, AIX, Linux: + <br>download <em>BSF4ooRexx_install.zip</em>, + <br>unzip the archive, + <br>change into the <em>install</em> folder and pick next the folder named + after your operating system, + <br>double-click on the file named <em>install.cmd</em> or <em>install.sh</em> </ul> - <p> + </ul> @@ -87,14 +63,14 @@ <a href="http://www.OpenOffice.org">http://www.OpenOffice.org</a>. <p>If you have questions ad ooRexx and/or BSF4ooRexx then consult + <a href="http://www.RexxLA.org">http://www.RexxLA.org</a>, <a href="news:comp.lang.rexx">news:comp.lang.rexx</a>, - <a href="http://www.RexxLA.org">http://www.RexxLA.org</a>, <a href="http://www.ooRexx.org">http://www.ooRexx.org</a>. <p> <hr> <p>Rony G. Flatscher, Wien (Vienna), Österreich (Austria), Europe - <p>Last edited: 2011-04-29 + <p>Last edited: 2014-04-03 </body> Modified: trunk/bsf4oorexx.dev/ScriptProviderForooRexx.update.xml =================================================================== --- trunk/bsf4oorexx.dev/ScriptProviderForooRexx.update.xml 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/ScriptProviderForooRexx.update.xml 2014-04-05 11:48:47 UTC (rev 190) @@ -3,16 +3,18 @@ <description xmlns="http://openoffice.org/extensions/update/2006" xmlns:xlink="http://www.w3.org/1999/xlink"> - <version value="406.20110429"/> + <version value="450.20140403"/> <identifier value="org.oorexx.uno.ScriptProviderForooRexx.package"/> <update-website> <src xlink:href="http://wi.wu-wien.ac.at/rgf/rexx/OOo/ScriptProviderForooRexx.update.html" lang="en"/> +<!-- <src xlink:href="http://www.rexxla.org/updates/ScriptProviderForooRexx.update.html" lang="en"/> <src xlink:href="http://www.oorexx.org/updates/ScriptProviderForooRexx.update.html" lang="en"/> <src xlink:href="http://www.netrexx.org/updates/ScriptProviderForooRexx.update.html" lang="en"/> <src xlink:href="http://sourceforge.net/projects/bsf4oorexx/files/ScriptProviderForooRexx.update.html" lang="en"/> +--> </update-website> Modified: trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml =================================================================== --- trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml 2014-04-05 11:48:47 UTC (rev 190) @@ -3,7 +3,7 @@ xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink"> - <version value="410.20120609"/> + <version value="450.20140404"/> <identifier value="org.oorexx.uno.ScriptProviderForooRexx.package"/> @@ -13,10 +13,12 @@ <update-information> <src xlink:href="http://wi.wu-wien.ac.at/rgf/rexx/OOo/ScriptProviderForooRexx.update.xml" lang="en"/> +<!-- <src xlink:href="http://www.rexxla.org/updates/ScriptProviderForooRexx.update.xml" lang="en"/> <src xlink:href="http://www.oorexx.org/updates/ScriptProviderForooRexx.update.xml" lang="en"/> <src xlink:href="http://www.netrexx.org/updates/ScriptProviderForooRexx.update.xml" lang="en"/> <src xlink:href="http://sourceforge.net/projects/bsf4oorexx/files/ScriptProviderForooRexx.update.html" lang="en"/> +--> </update-information> <publisher> @@ -24,8 +26,9 @@ </publisher> <release-notes> - <src xlink:href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4oorexx/current/ReleaseNotes.txt" lang="en"/> + <src xlink:href="http://wi.wu-wien.ac.at/rgf/rexx/OOo/ScriptProviderForooRexx.release-notes_en.txt" lang="en"/> <!-- + <src xlink:href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4oorexx/current/ReleaseNotes.txt" lang="en"/> <src xlink:href="information/changesOOo.txt" lang="en"/> --> </release-notes> Modified: trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/changesOOo.txt =================================================================== --- trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/changesOOo.txt 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/information/changesOOo.txt 2014-04-05 11:48:47 UTC (rev 190) @@ -1,3 +1,26 @@ +-------------------------------------- 2014-04-02 ---------------------------------- + +- ScriptProviderForooRexx.java + + - add code in getBSFManager() to cater for a stupid error in MacOSX AOO 4.0.x and 4.1. + (process environment not set, so PATH missing, such that ooRexx cannot be + initialized at all) + +-------------------------------------- 2014-03-24 ---------------------------------- + +- ScriptProviderForooRexx.java + + - fixed typo in method name "ScriptProviderForooRexx.makeFilenameLedgible()" + to "ScriptProviderForooRexx.makeFilenameLegible()" (removed 'd') + + - cf. RFE "#5 Add more detailed error information to ScriptProviderForooRexx ", + <http://sourceforge.net/p/bsf4oorexx/feature-requests/5/> + + - add an interactive debug mode at compilation time (flag is a static + field, such that the compiler can remove dependent code if flag is set + to false), which uses popups and copies exception data to the clipboard + + -------------------------------------- 2012-06-19 ---------------------------------- - samples/getVersion.rxj Modified: trunk/bsf4oorexx.dev/bin/BSF.CLS =================================================================== --- trunk/bsf4oorexx.dev/bin/BSF.CLS 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/bin/BSF.CLS 2014-04-05 11:48:47 UTC (rev 190) @@ -415,7 +415,7 @@ call initialize.BSF.dir -- set up .bsf4rexx and its synonym .b4r - .bsf4rexx~version="450.20140330" -- set version (date distribution got created) + .bsf4rexx~version="450.20140403" -- set version (date distribution got created) .bsf4rexx~opSys =opsys -- save operating system name as supplied by Rexx' PARSE SOURCE .bsf4rexx~opSys1 =opsys~left(1)~upper -- save operating system name's initial letter in uppercase .bsf4rexx~opSys2 =opsys~left(2)~upper -- save operating system name's first two letters in uppercase Modified: trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt =================================================================== --- trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2014-04-05 11:48:47 UTC (rev 190) @@ -1,3 +1,36 @@ +-------------------------------------- 2014-04-03 ---------------------------------- + +- BSF4ooRexx.cc + + - make sure that BSFDetach() does not detach from the primodal thread + +-------------------------------------- 2014-04-02 ---------------------------------- + +- RexxAndJava.java + + - move initialization of JNI library to RexxAndJava constructor to make + sure that non-Rexx JNI functions are available to Java (like jniProcEnvironment()) + +- ScriptProviderForooRexx.java + + - add code in getBSFManager() to cater for a stupid error in MacOSX AOO 4.0.x and 4.1. + (process environment not set, so PATH missing, such that ooRexx cannot be + initialized at all) + + +-------------------------------------- 2014-03-31 ---------------------------------- + +- BSF4ooRexx.cc + + - rewrite all "const char*" types with "char*" types as the latest Clang + on MacOSX creates bus errors, if forcing "char*" on "const char*" (which is fine); + replacing: + char bla[nnn]=""; + with + char *bla=new char[nnn]; + and + delete [] bla; + -------------------------------------- 2014-03-30 ---------------------------------- - BSF4ooRexx.cc @@ -22,6 +55,11 @@ - BSFRawBytes() - BSF() +- RexxEngine.java + + - add undocumented pass-thru method procEnvironment(...) to allow a last resort means + (allow Java to set/get process environment variables via JNI using RexxAndJava) + -------------------------------------- 2014-03-29 ---------------------------------- - BSF4ooRexx.cc Modified: trunk/bsf4oorexx.dev/changesOOo.txt =================================================================== --- trunk/bsf4oorexx.dev/changesOOo.txt 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/changesOOo.txt 2014-04-05 11:48:47 UTC (rev 190) @@ -1,3 +1,26 @@ +-------------------------------------- 2014-04-02 ---------------------------------- + +- ScriptProviderForooRexx.java + + - add code in getBSFManager() to cater for a stupid error in MacOSX AOO 4.0.x and 4.1. + (process environment not set, so PATH missing, such that ooRexx cannot be + initialized at all) + +-------------------------------------- 2014-03-24 ---------------------------------- + +- ScriptProviderForooRexx.java + + - fixed typo in method name "ScriptProviderForooRexx.makeFilenameLedgible()" + to "ScriptProviderForooRexx.makeFilenameLegible()" (removed 'd') + + - cf. RFE "#5 Add more detailed error information to ScriptProviderForooRexx ", + <http://sourceforge.net/p/bsf4oorexx/feature-requests/5/> + + - add an interactive debug mode at compilation time (flag is a static + field, such that the compiler can remove dependent code if flag is set + to false), which uses popups and copies exception data to the clipboard + + -------------------------------------- 2012-06-19 ---------------------------------- - samples/getVersion.rxj Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2014-04-05 11:48:47 UTC (rev 190) @@ -36,11 +36,14 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 4.2.0, 2014-03-29 + * @version 4.2.0, 2014-04-02 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) */ /* + 2014-04-02, ---rgf, - move initialization of JNI library to RexxAndJava constructor to make + sure that non-Rexx JNI functions are available to Java (like jniProcEnvironment()) + 2014-03-29, ---rgf, - add jniProcEnvironment(...): this allows to get, set and unset the process environment from Java; reason: AOO 4.x removes the PATH environment variable (seems to be unintended, hence an error), which inhibits the @@ -290,7 +293,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "420.20140329"; + static final public String version = "420.20140402"; static final private String pkgName = "org.rexxla.bsf.engines.rexx"; @@ -580,6 +583,8 @@ // register this type-convertor glob_tcr.register (String.class, Object.class, tc); // rgf, 2005-07-30 } + + jniSetupNativeJVMPointer(); // make sure the JNI library can initialize the Java related datastructures } @@ -5705,7 +5710,8 @@ throw new BSFException("A Rexx interpreter instance has been created already having the ID ["+rii_ID+"]"); } - jniSetupNativeJVMPointer(); // make sure C++ side gets a JVM pointer + // --rgf, 2014-04-02: now initialization takes place in constructor, such that calling jniProcEnvironment() can be carried out without a physical Rexx interpreter instance + // jniSetupNativeJVMPointer(); // make sure C++ side gets a JVM pointer Object options[]=null; if (rc!=null) Modified: trunk/bsf4oorexx.dev/source_java/RexxEngine.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxEngine.java 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/bsf4oorexx.dev/source_java/RexxEngine.java 2014-04-05 11:48:47 UTC (rev 190) @@ -38,7 +38,7 @@ /* last change: $Revision: 546 $ $Author: rony $ $Date: 2009-10-20 20:45:19 +0200 (Tue, 20 Oct 2009) $ 2014-03-30, ---rgf, - add undocumented pass-thru method procEnvironment(...) to allow a last resort means - (allow Java to set/get process environment variables via JNI) + (allow Java to set/get process environment variables via JNI using RexxAndJava) 2013-06-29, ---rgf, - get isTerminated() back into the code; was mistakingly deleted between rev 137 and 148 Modified: trunk/com/sun/star/script/framework/provider/oorexx/GlyphGutter.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/PlainSourceView.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx$1$1.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx$1.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx$2.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx.java =================================================================== --- trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx.java 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/com/sun/star/script/framework/provider/oorexx/ScriptEditorForooRexx.java 2014-04-05 11:48:47 UTC (rev 190) @@ -6,18 +6,7 @@ * * last change: $Author: rony $ $Date: 2009-04-06 17:51:23 +0200 (Mon, 06 Apr 2009) $ * -* changed: 2006-01-17, ---rgf: using Thread.currentThread().getContextClassLoader().loadClass(...) -* instead of Class.forName(...); -* -* 2006-01-28, ---rgf: taking care of the new BSF4Rexx behaviour, which throws a Java exception -* supplying the Rexx execution error messages via the exception object; -* will now extract the error line number, position on that line and -* give the error message for the developer -* 2008-06-23, ---rgf: changed logic to parse the line number from Rexx error messages - - 2011-02-18, ---rgf: applying fix that Stephan Bergman created for the ScriptEdtiorForBeanShell, - cf. <http://www.openoffice.org/issues/show_bug.cgi?id=92926> * * * The Contents of this file are made available subject to the terms of @@ -73,10 +62,28 @@ * ************************************************************************/ -/* changed: 2008-06-14, ---rgf, now using "ScriptProviderForooRexx.makeFilenameLedgible()" to +/* changed: 2006-01-17, ---rgf: using Thread.currentThread().getContextClassLoader().loadClass(...) + instead of Class.forName(...); + + 2006-01-28, ---rgf: taking care of the new BSF4Rexx behaviour, which throws a Java exception + supplying the Rexx execution error messages via the exception object; + will now extract the error line number, position on that line and + give the error message for the developer + + 2008-06-14, ---rgf, now using "ScriptProviderForooRexx.makeFilenameLedgible()" to make the filename in the title bar more ledgible - changed: 2009-02-21, ---rgf, added mnemonics to the editor buttons to allow + + 2008-06-23, ---rgf: changed logic to parse the line number from Rexx error messages + + 2009-02-21, ---rgf, added mnemonics to the editor buttons to allow accelerator key navigation + + 2011-02-18, ---rgf: applying fix that Stephan Bergman created for the ScriptEdtiorForBeanShell, + cf. <http://www.openoffice.org/issues/show_bug.cgi?id=92926> + + 2014-03-24, ---rgf + - fixed typo in method name "ScriptProviderForooRexx.makeFilenameLedgible()" + to "ScriptProviderForooRexx.makeFilenameLegible()" (removed 'd') */ package com.sun.star.script.framework.provider.oorexx; @@ -418,7 +425,7 @@ private void initUI() { - String title= ScriptProviderForooRexx.makeFilenameLedgible(filename); + String title= ScriptProviderForooRexx.makeFilenameLegible(filename); // frame = new JFrame(ScriptProviderForooRexx.OOREXX_LANGUAGE + " Debug Window: " + filename); // 20070921, rgf: use shorter title Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptImpl.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$_ScriptProviderForooRexx.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java =================================================================== --- trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java 2014-04-05 11:48:47 UTC (rev 190) @@ -1,3 +1,24 @@ +/************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + /************************************************************************* * * $RCSfile: ScriptProviderForooRexx.java,v $ @@ -5,6 +26,9 @@ * $Revision: 572 $ * * last change: $Author: rony $ $Date: 2010-02-16 21:53:17 +0100 (Tue, 16 Feb 2010) $ + + + * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -59,7 +83,7 @@ * ************************************************************************/ -/* changed: 2008-06-14, ---rgf, now supplying filename to ooRexx, added utiltiy +/* changed: 2008-06-14, ---rgf, now supplying filename to ooRexx, added utility method "ScriptProviderForooRexx.makeFilenameLedgible()" 2008-06-17, ---rgf, now supplying the fully qualified file name in the @@ -141,11 +165,31 @@ If "slotParam" (a Hashtable) is not supplied the BSFRegistry is looked up as before. + 2014-03-24, ---rgf + - fixed typo in method name "ScriptProviderForooRexx.makeFilenameLedgible()" + to "ScriptProviderForooRexx.makeFilenameLegible()" (removed 'd') + - cf. RFE "#5 Add more detailed error information to ScriptProviderForooRexx ", + <http://sourceforge.net/p/bsf4oorexx/feature-requests/5/> + + - add an interactive debug mode at compilation time (flag is a static + field, such that the compiler can remove dependent code if flag is set + to false), which uses popups and copies exception data to the clipboard + + 2014-04-02, ---rgf + - add code in getBSFManager() to cater for a stupid error in MacOSX AOO 4.0.x and 4.1. + (process environment not set, so PATH missing, such that ooRexx cannot be + initialized at all) + + */ package com.sun.star.script.framework.provider.oorexx; + +import java.awt.datatransfer.*; // rgf, 2014-03-24 +import java.awt.Toolkit; // rgf, 2014-03-24 + import org.apache.bsf.BSFManager; // rgf, 2005-07-08 import org.rexxla.bsf.engines.rexx.RexxEngine; // rgf, 2008-08-28, 2009-04-06 import org.apache.bsf.BSFException; // rgf, 2009-10-31 @@ -180,6 +224,8 @@ import java.util.Hashtable; // rgf, 2009-10-31 import java.lang.reflect.Method; // rgf, 2008-08-09 (for OOo 3.0 support) +import java.lang.reflect.Field; // rgf, 2014-03-27 +import java.util.Collections; // rgf, 2014-03-27 import java.util.Properties; import java.util.StringTokenizer; import java.util.Vector; @@ -207,6 +253,8 @@ public class ScriptProviderForooRexx { + static final private boolean bDebug = false; // true; // 2014-03-24 interactive debug? + static final String OOREXX_LANGUAGE = "ooRexx"; // define string for script language static final String OOREXX_BSFLANGUAGE = "rexx"; // define string for script language @@ -219,7 +267,7 @@ static final String OOREXX_XSCRIPTCONTEXT_KEY = "OOo.xScriptContext"; static final String OOREXX_VERSION_KEY = "OOo.ooRexxScriptProvider.version"; - static final String OOREXX_VERSION_VALUE = "108.20091031"; // 20070921 + static final String OOREXX_VERSION_VALUE = "109.20140330"; // 20070921 static final String OOREXX_FILENAME = "OOo.fileName"; // 20070920 static final String OOREXX_SCRIPTMETADATA = "OOo.ScriptMetaData"; // 20070920 @@ -247,18 +295,150 @@ // protected static BSFManager getBSFManager() throws BSFException // 2009-10-30, rgf public static BSFManager getBSFManager() throws BSFException // 2009-10-31, after releasing Beta 2 { - if (bsfManager==null) + if (bDebug==true) // 2014-03-24, rgf { - bsfManager=new BSFManager(); // create a new manager - // initialize the UNO support for this Rexx instance, such that any Rexx script thereafter - // that requires UNO.CLS just re-uses it (exploiting the new requires-behaviour in ooRexx 4.0) - bsfManager.apply(OOREXX_BSFLANGUAGE, - // source ("program name"): - "com.sun.star.script.framework.provider.oorexx.ScriptProviderForooRexx.requires_UNO.CLS.rex", - 0, 0, - "::requires UNO.CLS", // Rexx code to execute - null, null); + ScriptImpl.showErrorMessage("ScriptProviderForooRexx.getBSFManager(...), arrived in getBSFManager(), bsfManager=["+bsfManager+"]"); } + + if (bsfManager==null) // no BSFManager yet, initiate one + { + + bsfManager=new BSFManager(); // create a new BSFManager for dispatching ooRexx scripts + + // make sure that on AOO for MacOSX, PATH is set (maybe even PWD); + // AOO 4.0.x and possibly AOO 4.1.x do not set environment correctly due to using outdated putenv() on MacOSX + // supply default values, such that the ooRexx interpreter can start + if (System.getenv("PATH")==null) // PATH not set, we have a serious problem (ooRexx cannot initialize!) + { + + if (System.getProperty("os.name").charAt(0)=='M') // on MacOSX + { + final int GETENV=1; + final int SETENV=2; + org.rexxla.bsf.engines.rexx.RexxEngine re = (RexxEngine) bsfManager.loadScriptingEngine("rexx"); + + if (re.procEnvironment(GETENV,"PATH",null)==null) // PATH not set, then set it! + { + re.procEnvironment(SETENV, "PATH", "/usr/bin:/bin:/user/sbin:/sbin:/usr/local/bin"); + } + + if (re.procEnvironment(GETENV, "PWD", null)==null) // PWD not set, set it to user's home + { + re.procEnvironment(SETENV, "PWD", System.getProperty("user.home")); + } + + if (bDebug==true) // 2014-03-24, rgf + { + String s="ScriptProviderForooRexx.getBSFManager(...), MACOSX, set PATH and PWD:\n"+ + "PATH=["+re.procEnvironment(GETENV,"PATH",null)+"]\n"+ + "PWD=["+re.procEnvironment(GETENV, "PWD", null)+"]"; + + ; + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); + } + } + else // raise an error, hinting at the problem! + { + bsfManager=null; // make sure we nullify + throw new BSFException("\"PATH\" environment variable not set, ooRexx cannot be fully initialized, aborting!"); + } + + + +/* ---> 2014-03-27, --rgf: throw exception, if PATH not set as ooRexx cannot initialize, but crashes! + // probably MacOSX, but let us make that sure + if (System.getProperty("os.name").charAt(0)=='M') + { + // does not work as no "setenv()" + // System.setenv("PATH", "/usr/bin:/bin:/user/sbin:/sbin:/usr/local/bin"); + + // supply default paths + Hashtable<String,String> ht=new Hashtable<String,String>(); + + ht.putAll(System.getenv()); + + ht.put("PATH","/usr/bin:/bin:/user/sbin:/sbin:/usr/local/bin"); + ht.put("PWD", System.getProperty("user.dir")); + setEnv((Map<String,String>) ht); + + // although works on Java, ooRexx does not get to see the newly added + // environment variables :-( + + + if (bDebug==true) // 2014-03-24, rgf + { + String s="ScriptProviderForooRexx.getBSFManager(...), MacOSX, PATH now: \""+System.getenv("PATH")+"\""+ + ", \"PWD\" now: \""+System.getenv("PWD")+"\""; + ; + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); + } + } + else + { + bsfManager=null; // make sure we nullify + throw new BSFException("\"PATH\" environment variable not set, ooRexx cannot be fully initialized, aborting!"); + } +<--- */ + + + + } + + if (bDebug==true) // 2014-03-24, rgf + { + String s="ScriptProviderForooRexx.getBSFManager(...), after trying to create a new BSFManager: ["+bsfManager+"] !"; + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); + } + + org.apache.bsf.BSFEngine eng=bsfManager.loadScriptingEngine("rexx"); + if (bDebug==true) // 2014-03-24, rgf + { + String s="ScriptProviderForooRexx.getBSFManager(...), after trying to load rexx engine: ["+eng+"] !"; + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); + + String str=""; + Map<String, String> env = System.getenv(); + for (String envName : env.keySet()) { + str=str+String.format("%s=%s%n", + envName, + env.get(envName)); + } + + s="ScriptProviderForooRexx.getBSFManager(...), process environment:\n"+str; + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); + + } + + + // initialize UNO.CLS support (which itself loads BSF.CLS, on MacOSX loading awt-related Java class) + try + { + // initialize the UNO support for this Rexx instance, such that any Rexx script thereafter + // that requires UNO.CLS just re-uses it (exploiting the new requires-behaviour in ooRexx 4.0) + bsfManager.apply(OOREXX_BSFLANGUAGE, + // source ("program name"): + "com.sun.star.script.framework.provider.oorexx.ScriptProviderForooRexx.requires_UNO.CLS.rex", + 0, 0, + "::requires UNO.CLS", // Rexx code to execute + null, null); + } + catch (BSFException t) + { + if (bDebug==true) // 2014-03-24, rgf + { + String s="ScriptProviderForooRexx.getBSFManager(...), intercepted BSFException\nwhile running \"::requires UNO.CLS\":\n"+ScriptImpl.getThrowableInfos(t); + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); + } + throw(t); // rethrow + } + + } return bsfManager; } @@ -281,7 +461,7 @@ * * @return string that contains the shortened (URL) path with file name of the script/macro */ - public static String makeFilenameLedgible (String filename) + public static String makeFilenameLegible (String filename) { String chunks[]=filename.split("}"); // split at closing curly bracket if (chunks.length>1) @@ -301,7 +481,7 @@ /** Returns the fully qualified, operating system dependent path to the script, if it * is located in the 'user' or 'share' location. Otherwise returns what - * 'makeFilenameLedgible(String fileName)' returns. + * 'makeFilenameLegible(String fileName)' returns. * * @return string fully qualified, operating system dependent path to the script in the * 'user' or 'share' location, otherwise a short form of the OOo URL-string @@ -436,7 +616,8 @@ } - /** + + /* * * Writes the service information into the given registry key. * This method is called by the <code>JavaLoader</code> * <p> @@ -445,6 +626,8 @@ * @return returns true if the operation succeeded * @see com.sun.star.comp.loader.JavaLoader */ +/* ---> 2014-03-25, rgf: still needed, although beanshell on AOO 4.1 does not have it (anymore?) +*/ public static boolean __writeRegistryServiceInfo( XRegistryKey regKey ) { String impl = "com.sun.star.script.framework.provider.oorexx." + @@ -465,10 +648,63 @@ return false; } + +// TODO: 2014-03-27, remove alltogether, does not allow ooRexx to see newly added PATH ! :-( +/* ---> + // 2014-03-27, rgf, cf. <http://stackoverflow.com/questions/318239/how-do-i-set-environment-variables-from-java> + protected static void setEnv(Map<String, String> newenv) throws BSFException + { + try + { + Class<?> processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment"); + Field theEnvironmentField = processEnvironmentClass.getDeclaredField("theEnvironment"); + theEnvironmentField.setAccessible(true); + Map<String, String> env = (Map<String, String>) theEnvironmentField.get(null); + env.putAll(newenv); + Field theCaseInsensitiveEnvironmentField = processEnvironmentClass.getDeclaredField("theCaseInsensitiveEnvironment"); + theCaseInsensitiveEnvironmentField.setAccessible(true); + Map<String, String> cienv = (Map<String, String>) theCaseInsensitiveEnvironmentField.get(null); + cienv.putAll(newenv); + } + catch (NoSuchFieldException e) + { + try { + Class[] classes = Collections.class.getDeclaredClasses(); + Map<String, String> env = System.getenv(); + for(Class cl : classes) { + if("java.util.Collections$UnmodifiableMap".equals(cl.getName())) { + Field field = cl.getDeclaredField("m"); + field.setAccessible(true); + Object obj = field.get(env); + Map<String, String> map = (Map<String, String>) obj; + map.clear(); + map.putAll(newenv); + } + } + } catch (Exception e2) { + // e2.printStackTrace(); + // throw e2; + + throw new BSFException("setEnv(...), e2-exception: "+e2.toString()); + + } + } catch (Exception e1) { + // e1.printStackTrace(); + // throw e1; + throw new BSFException("setEnv(...), e1-exception: "+e1.toString()); + } + } +<--- */ + + + +/* ---> */ + } // end of ScriptProviderForooRexx class ScriptImpl implements XScript { + static final private boolean bDebug = false; // true; // 2014-03-24 interactive debug? // the following static fields (populated in the static anonymous block) is // used for caching purposes; @@ -532,8 +768,11 @@ private Object m_xInvocContext; // new for OOo 3.0 // private ScriptContext m_xInvocContext; // new for OOo 3.0 +// TODO: 2014-03-25, remove OOo 2.x support, not needed anymore; no need to use reflection as a result +// the following is outdated: ScriptImpl( XComponentContext ctx, ScriptMetaData metaData, XModel xModel ) throws com.sun.star.uno.RuntimeException { + this.metaData = metaData; this.m_xContext = ctx; this.m_xModel = xModel; @@ -617,6 +856,14 @@ } catch ( java.net.MalformedURLException mfu ) { + + if (bDebug==true) // 2014-03-24, rgf + { + String s="ScriptProviderForooRexx.ScriptImpl.invoke(...)-java.net.MalformedURLException mfu:\n"+getThrowableInfos(mfu); + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); + } + // Framework error throw new ScriptFrameworkErrorException( mfu.getMessage(), null, @@ -625,6 +872,13 @@ } catch ( NoSuitableClassLoaderException nsc ) { + if (bDebug==true) // 2014-03-24, rgf + { + String s="ScriptProviderForooRexx.ScriptImpl.invoke(...)-NoSuitableClassLoaderException nsc:\n"+getThrowableInfos(nsc); + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); + } + // Framework error throw new ScriptFrameworkErrorException( nsc.getMessage(), null, @@ -695,13 +949,14 @@ } catch (Exception e) { t.setContextClassLoader(clTmp); // 20070920 rgf: re-set CL + // Framework error setting up context -/* - throw new ScriptFrameworkErrorException( - e.getMessage(), null, - metaData.getLanguageName(), metaData.getLanguage(), - ScriptFrameworkErrorType.UNKNOWN ); -*/ + if (bDebug==true) // 2014-03-24, rgf + { + String s="ScriptProviderForooRexx.ScriptImpl.invoke(...) while creating arguments for Rexx script:\n"+getThrowableInfos(e); + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); + } // rgf, 20091017: maybe toString() should be replaced by code assembling // the full error message as reported by Rexx ? @@ -712,7 +967,7 @@ } - + String filename=null; try { String source = null; Object result = null; @@ -747,17 +1002,20 @@ URL scriptSourceUrl=metaData.getSourceURL(); // get source URL from meta data - // String filename=(scriptSourceUrl==null ?"OOo.ScriptProviderForooRexx-ScriptProviderForooRexx.invoke()" :ScriptProviderForooRexx.makeFilenameLedgible (scriptSourceUrl.getFile())); + // String filename=(scriptSourceUrl==null ?"OOo.ScriptProviderForooRexx-ScriptProviderForooRexx.invoke()" :ScriptProviderForooRexx.makeFilenameLegible (scriptSourceUrl.getFile())); // rgf, 2008-06-17 - String filename=ScriptProviderForooRexx.getSystemPathFromFileURL(m_xContext,metaData); + // String + filename=ScriptProviderForooRexx.getSystemPathFromFileURL(m_xContext,metaData); // RexxEngine re=(RexxEngine) mgr.loadScriptingEngine("rexx"); // get Rexx BSF scripting engine +// TODO: invokeLater ?? or is it already executing on a non-AppKit-thread ? + // rgf, 2005-07-08 result=mgr.apply(ScriptProviderForooRexx.OOREXX_BSFLANGUAGE, filename, - // (sourceUrl==null ? "OOo.ScriptProviderForooRexx-ScriptProviderForooRexx.invoke()" : ScriptProviderForooRexx.makeFilenameLedgible (sourceUrl.getFile())+" ScriptProviderForooRexx"), + // (sourceUrl==null ? "OOo.ScriptProviderForooRexx-ScriptProviderForooRexx.invoke()" : ScriptProviderForooRexx.makeFilenameLegible (sourceUrl.getFile())+" ScriptProviderForooRexx"), // "OOo.ScriptProviderForooRexx", 0, 0, source, null, args); @@ -768,7 +1026,7 @@ // re.setThreadedRexxStart(true); // rgf, 2008-08-13: tell engine to invoke the Rexx interpreter on a separate Java thread result=re.apply( filename, - // (sourceUrl==null ? "OOo.ScriptProviderForooRexx-ScriptProviderForooRexx.invoke()" : ScriptProviderForooRexx.makeFilenameLedgible (sourceUrl.getFile())+" ScriptProviderForooRexx"), + // (sourceUrl==null ? "OOo.ScriptProviderForooRexx-ScriptProviderForooRexx.invoke()" : ScriptProviderForooRexx.makeFilenameLegible (sourceUrl.getFile())+" ScriptProviderForooRexx"), // "OOo.ScriptProviderForooRexx", 0, 0, source, null, args); */ @@ -785,6 +1043,14 @@ catch ( Exception e ) { t.setContextClassLoader(clTmp); // 20070920 rgf: re-set CL + + if (bDebug==true) // 2014-03-24, rgf + { + String s="ScriptProviderForooRexx.ScriptImpl.invoke(...) while trying to run a ooRexx script\nfilename=\""+filename+"\":\n"+getThrowableInfos(e); + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); + } + throw new ScriptFrameworkErrorException( // "Failed to read script", null, e.getMessage(), null, @@ -855,9 +1121,41 @@ } - private static void showErrorMessage(String message) { + final static void showErrorMessage(String message) { javax.swing.JOptionPane.showMessageDialog(null, message, "Error", javax.swing.JOptionPane.INFORMATION_MESSAGE); } + + + + // rgf, 2014-03-24, cf. <http://stackoverflow.com/questions/1149703/stacktrace-to-string-in-java> + final static String getThrowableInfos(final Throwable ta) + { + // create a list of causes, show their messages + int i=0; + StringBuilder sb=new StringBuilder(); + + for (Throwable d=ta;d!=null;d.getCause()) + { + sb.append("Cause level # ").append(i++). + append(' ').append(d.toString()).append(": [").append(d.getMessage()).append("]\n"); + } + + // get stack trace as string + StringWriter sw = new StringWriter(); + ta.printStackTrace(new PrintWriter(sw)); + return sb.toString()+"\n--- stack trace:\n"+sw.toString(); + } + + // rgf, 2014-03-24, cf. <http://stackoverflow.com/questions/6710350/copying-text-to-the-clipboard-using-java> + + final static void copy2clipboard(String s) { + Toolkit.getDefaultToolkit(). + getSystemClipboard(). + setContents(new StringSelection(s), null);; + } + + + } // end of ScriptImpl Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceModel.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceModel.java =================================================================== --- trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceModel.java 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceModel.java 2014-04-05 11:48:47 UTC (rev 190) @@ -61,6 +61,10 @@ /* changed: 2008-06-14, ---rgf, now using "ScriptProviderForooRexx.makeFilenameLedgible()", now supplying filename to ooRexx + + 2014-03-24, ---rgf + - fixed typo in method name "ScriptProviderForooRexx.makeFilenameLedgible()" + to "ScriptProviderForooRexx.makeFilenameLegible()" (removed 'd') */ package com.sun.star.script.framework.provider.oorexx; @@ -201,9 +205,10 @@ // RexxEngine re=(RexxEngine) mgr.loadScriptingEngine("rexx"); // get Rexx BSF scripting engine // result=mgr.apply(ScriptProviderForooRexx.OOREXX_BSFLANGUAGE, "OOo.ooRexx-editor", 0, 0, ( view.isModified() ? view.getText() : getText()), null, args); +// TODO: invokeLater ?? or is it already executing on a non-AppKit-thread ? result=mgr.apply(ScriptProviderForooRexx.OOREXX_BSFLANGUAGE, // "OOo.ooRexx-editor ["+filename+"]", - // (filename==null ? "OOo.ScriptProviderForooRexx-ScriptSourceModel.execute()" : ScriptProviderForooRexx.makeFilenameLedgible (filename)), + // (filename==null ? "OOo.ScriptProviderForooRexx-ScriptSourceModel.execute()" : ScriptProviderForooRexx.makeFilenameLegible (filename)), filename, 0, 0, ( view.isModified() ? view.getText() : getText()), @@ -218,7 +223,7 @@ // re.setThreadedRexxStart(true); // rgf, 2008-08-13: tell engine to invoke the Rexx interpreter on a separate Java thread result=re.apply( // "OOo.ooRexx-editor ["+filename+"]", - // (filename==null ? "OOo.ScriptProviderForooRexx-ScriptSourceModel.execute()" : ScriptProviderForooRexx.makeFilenameLedgible (filename)), + // (filename==null ? "OOo.ScriptProviderForooRexx-ScriptSourceModel.execute()" : ScriptProviderForooRexx.makeFilenameLegible (filename)), filename, 0, 0, ( view.isModified() ? view.getText() : getText()), Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceView.class =================================================================== (Binary files differ) Modified: trunk/compile_all.cmd =================================================================== --- trunk/compile_all.cmd 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/compile_all.cmd 2014-04-05 11:48:47 UTC (rev 190) @@ -2,7 +2,11 @@ @rem needs junit (for BSF tests) and Xalan (for BSF-xslt-engine) on classpath setlocal +rem TODO: for compiling the script provider need to add "ScriptFramework.jar" to CLASSPATH, e.g. +rem D:\Programme\OpenOffice 4\program\classes\ScriptFramework.jar +rem rgf, 2014-02-10 + goto end_01 @echo setting environment to point to asm and janino explicitly ... @rem ATTENTION: must change into directory such that %cd% there points to the right location! Modified: trunk/createDistributionForBSF4ooRexx4.cmd =================================================================== --- trunk/createDistributionForBSF4ooRexx4.cmd 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/createDistributionForBSF4ooRexx4.cmd 2014-04-05 11:48:47 UTC (rev 190) @@ -24,8 +24,8 @@ -set runDate=20130715 -set doc_date=2013-07-15 +set runDate=20140404 +set doc_date=2014-04-04 @rem values to use for creating the BSF jarfile @rem set bsfDate=20090910 Modified: trunk/createScriptProviderForooRexx.cmd =================================================================== --- trunk/createScriptProviderForooRexx.cmd 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/createScriptProviderForooRexx.cmd 2014-04-05 11:48:47 UTC (rev 190) @@ -65,7 +65,11 @@ rem to compile: rem add path to "ScriptFramework.jar", eg. rem set CLASSPATH=%CLASSPATH%;D:\Programme\OpenOffice.org 3\Basis\program\classes\ScriptFramework.jar +rem set CLASSPATH=%CLASSpATH%;D:\Programme\OpenOffice 4\program\classes\ScriptFramework.jar rem compile using Java 1.4 class file format rem javac -source 1.4 -target 1.4 *.java +rem if using bDebug, then generics are needed, hence use: +rem javac -source 1.5 -target 1.5 *.java + Modified: trunk/make-docs-apache.cmd =================================================================== --- trunk/make-docs-apache.cmd 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/make-docs-apache.cmd 2014-04-05 11:48:47 UTC (rev 190) @@ -8,7 +8,7 @@ set doc_date=%runDate% if not "%doc_date%"=="" goto continue -set doc_date=2013-06-29 +set doc_date=2014-03-30 :continue set docs_header=-header "%doc_date%, rgf" Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2014-04-03 19:47:35 UTC (rev 189) +++ trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2014-04-05 11:48:47 UTC (rev 190) @@ -21,7 +21,7 @@ * * * <pre>------------------------ Apache Version 2.0 license ------------------------- - * Copyright (C) 2001-2013 Rony G. Flatscher + * Copyright (C) 2001-2014 Rony G. Flatscher * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,11 +36,21 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 4.1.1, 2013-06-25 + * @version 4.2.0, 2014-04-02 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) */ /* + 2014-04-02, ---rgf, - move initialization of JNI library to RexxAndJava constructor to make + sure that non-Rexx JNI functions are available to Java (like jniProcEnvironment()) + + 2014-03-29, ---rgf, - add jniProcEnvironment(...): this allows to get, set and unset the + process environment from Java; reason: AOO 4.x removes the PATH environment + variable (seems to be unintended, hence an error), whic... [truncated message content] |
From: <or...@us...> - 2014-04-10 09:44:54
|
Revision: 193 http://sourceforge.net/p/bsf4oorexx/code/193 Author: orexx Date: 2014-04-10 09:44:51 +0000 (Thu, 10 Apr 2014) Log Message: ----------- 20140410 Update ScriptProviderForooRexx files. Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll trunk/com/sun/star/script/framework/provider/oorexx/ScriptImpl.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$_ScriptProviderForooRexx.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.class trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceModel.class trunk/createDistributionForBSF4ooRexx4.cmd Added Paths: ----------- trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$1.class Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml =================================================================== --- trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml 2014-04-06 14:14:59 UTC (rev 192) +++ trunk/bsf4oorexx.dev/ScriptProviderForooRexxPackage/description.xml 2014-04-10 09:44:51 UTC (rev 193) @@ -3,7 +3,7 @@ xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink"> - <version value="450.20140404"/> + <version value="450.20140408"/> <identifier value="org.oorexx.uno.ScriptProviderForooRexx.package"/> Modified: trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptImpl.class =================================================================== (Binary files differ) Added: trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$1.class =================================================================== (Binary files differ) Index: trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$1.class =================================================================== --- trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$1.class 2014-04-06 14:14:59 UTC (rev 192) +++ trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$1.class 2014-04-10 09:44:51 UTC (rev 193) Property changes on: trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$1.class ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/x-java-applet \ No newline at end of property Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx$_ScriptProviderForooRexx.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.class =================================================================== (Binary files differ) Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java =================================================================== --- trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java 2014-04-06 14:14:59 UTC (rev 192) +++ trunk/com/sun/star/script/framework/provider/oorexx/ScriptProviderForooRexx.java 2014-04-10 09:44:51 UTC (rev 193) @@ -176,10 +176,10 @@ field, such that the compiler can remove dependent code if flag is set to false), which uses popups and copies exception data to the clipboard - 2014-04-02, ---rgf - - add code in getBSFManager() to cater for a stupid error in MacOSX AOO 4.0.x and 4.1. - (process environment not set, so PATH missing, such that ooRexx cannot be - initialized at all) + 2014-04-08, ---rgf + - add code in getBSFManager() to cater for a stupid error in MacOSX AOO 4.0.x + (process environment not set correctly, so PATH missing, such that ooRexx cannot + be initialized at all) */ @@ -267,7 +267,7 @@ static final String OOREXX_XSCRIPTCONTEXT_KEY = "OOo.xScriptContext"; static final String OOREXX_VERSION_KEY = "OOo.ooRexxScriptProvider.version"; - static final String OOREXX_VERSION_VALUE = "109.20140330"; // 20070921 + static final String OOREXX_VERSION_VALUE = "109.20140408"; // 20070921 static final String OOREXX_FILENAME = "OOo.fileName"; // 20070920 static final String OOREXX_SCRIPTMETADATA = "OOo.ScriptMetaData"; // 20070920 @@ -306,11 +306,10 @@ bsfManager=new BSFManager(); // create a new BSFManager for dispatching ooRexx scripts // make sure that on AOO for MacOSX, PATH is set (maybe even PWD); - // AOO 4.0.x and possibly AOO 4.1.x do not set environment correctly due to using outdated putenv() on MacOSX - // supply default values, such that the ooRexx interpreter can start + // AOO 4.0.x does not set environment correctly due to using outdated putenv() on MacOSX + // supply default value for PATH, such that the ooRexx interpreter can start if (System.getenv("PATH")==null) // PATH not set, we have a serious problem (ooRexx cannot initialize!) { - if (System.getProperty("os.name").charAt(0)=='M') // on MacOSX { final int GETENV=1; @@ -340,66 +339,36 @@ } else // raise an error, hinting at the problem! { - bsfManager=null; // make sure we nullify - throw new BSFException("\"PATH\" environment variable not set, ooRexx cannot be fully initialized, aborting!"); - } + if (bDebug==true) // 20140407, rgf + { + String str=""; + Map<String, String> env = System.getenv(); + for (String envName : env.keySet()) { + str=str+String.format(" %s=%s%n", + envName, + env.get(envName)); + } + String s="ScriptProviderForooRexx.getBSFManager(...), ) PATH not set, about to throw BSFException()\nprocess environment:\n"+str; + s=s+"\n--- using JNI to fetch PATH and PWD:\n"; -/* ---> 2014-03-27, --rgf: throw exception, if PATH not set as ooRexx cannot initialize, but crashes! - // probably MacOSX, but let us make that sure - if (System.getProperty("os.name").charAt(0)=='M') - { - // does not work as no "setenv()" - // System.setenv("PATH", "/usr/bin:/bin:/user/sbin:/sbin:/usr/local/bin"); + final int GETENV=1; + org.rexxla.bsf.engines.rexx.RexxEngine re = (RexxEngine) bsfManager.loadScriptingEngine("rexx"); + s=s+"\tPATH=["+re.procEnvironment(GETENV,"PATH",null)+"]\n" + +"\tPWD =["+re.procEnvironment(GETENV,"PWD",null)+"]"; - // supply default paths - Hashtable<String,String> ht=new Hashtable<String,String>(); - ht.putAll(System.getenv()); - - ht.put("PATH","/usr/bin:/bin:/user/sbin:/sbin:/usr/local/bin"); - ht.put("PWD", System.getProperty("user.dir")); - setEnv((Map<String,String>) ht); - - // although works on Java, ooRexx does not get to see the newly added - // environment variables :-( - - - if (bDebug==true) // 2014-03-24, rgf - { - String s="ScriptProviderForooRexx.getBSFManager(...), MacOSX, PATH now: \""+System.getenv("PATH")+"\""+ - ", \"PWD\" now: \""+System.getenv("PWD")+"\""; - ; ScriptImpl.copy2clipboard(s); ScriptImpl.showErrorMessage(s); } - } - else - { bsfManager=null; // make sure we nullify throw new BSFException("\"PATH\" environment variable not set, ooRexx cannot be fully initialized, aborting!"); } -<--- */ - - - } - if (bDebug==true) // 2014-03-24, rgf + if (bDebug==true) // 20140407, rgf { - String s="ScriptProviderForooRexx.getBSFManager(...), after trying to create a new BSFManager: ["+bsfManager+"] !"; - ScriptImpl.copy2clipboard(s); - ScriptImpl.showErrorMessage(s); - } - - org.apache.bsf.BSFEngine eng=bsfManager.loadScriptingEngine("rexx"); - if (bDebug==true) // 2014-03-24, rgf - { - String s="ScriptProviderForooRexx.getBSFManager(...), after trying to load rexx engine: ["+eng+"] !"; - ScriptImpl.copy2clipboard(s); - ScriptImpl.showErrorMessage(s); - String str=""; Map<String, String> env = System.getenv(); for (String envName : env.keySet()) { @@ -408,10 +377,18 @@ env.get(envName)); } - s="ScriptProviderForooRexx.getBSFManager(...), process environment:\n"+str; + String s="ScriptProviderForooRexx.getBSFManager(...), new BSFManager=["+bsfManager+"], before \".loadScriptingEngine(\"rexx\")\"\nprocess environment:\n"+str; ScriptImpl.copy2clipboard(s); ScriptImpl.showErrorMessage(s); + } + org.apache.bsf.BSFEngine eng=bsfManager.loadScriptingEngine("rexx"); + + if (bDebug==true) // 2014-03-24, rgf + { + String s="ScriptProviderForooRexx.getBSFManager(...), after trying to load rexx engine: ["+eng+"] !"; + ScriptImpl.copy2clipboard(s); + ScriptImpl.showErrorMessage(s); } Modified: trunk/com/sun/star/script/framework/provider/oorexx/ScriptSourceModel.class =================================================================== (Binary files differ) Modified: trunk/createDistributionForBSF4ooRexx4.cmd =================================================================== --- trunk/createDistributionForBSF4ooRexx4.cmd 2014-04-06 14:14:59 UTC (rev 192) +++ trunk/createDistributionForBSF4ooRexx4.cmd 2014-04-10 09:44:51 UTC (rev 193) @@ -24,8 +24,8 @@ -set runDate=20140404 -set doc_date=2014-04-04 +set runDate=20140410 +set doc_date=2014-04-10 @rem values to use for creating the BSF jarfile @rem set bsfDate=20090910 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2014-05-17 17:13:49
|
Revision: 200 http://sourceforge.net/p/bsf4oorexx/code/200 Author: orexx Date: 2014-05-17 17:13:45 +0000 (Sat, 17 May 2014) Log Message: ----------- 20140517 Further work on (simplifying) attaching/detaching to/from JVM, even improving performance slightly in this area (at least 5% faster than previous implementation). Source code really needs some tidying up by now. ;) Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/bsf4oorexx.dev/bin/BSF.CLS trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc trunk/samples/Greetings.rxj trunk/samples/ShootOut2.rxj Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/bin/BSF.CLS =================================================================== --- trunk/bsf4oorexx.dev/bin/BSF.CLS 2014-05-15 19:54:16 UTC (rev 199) +++ trunk/bsf4oorexx.dev/bin/BSF.CLS 2014-05-17 17:13:45 UTC (rev 200) @@ -12,6 +12,7 @@ needs: ooRexx 4.0.1 (cf. <http://www.ooRexx.org>) and BSF4ooRexx 4.0 or greater date: + 2014-05-17, rgf: - adjust bsf.terminateRexxEngine() to cater for the new behaviour 2014-05-15, rgf: - moved MacOSX initialization code to public routine "makeBSF4ooRexxLookLikeMacOSX": ooRexx macros in AOO 4.x on MacOSX do not run, as this setup code uses an awt class which must nor run on the main thread on MacOSX. As a result @@ -333,7 +334,7 @@ - version: 4.50 (20140330) + version: 4.50 (20140517) authors: (c) 2001-2014 Rony G. Flatscher, University of Augsburg, University of Essen, WU (pronounced: "vey-uh") Vienna; @@ -422,7 +423,7 @@ call initialize.BSF.dir -- set up .bsf4rexx and its synonym .b4r - .bsf4rexx~version="450.20140515" -- set version (date distribution got created) + .bsf4rexx~version="450.20140517" -- set version (date distribution got created) .bsf4rexx~opSys =opsys -- save operating system name as supplied by Rexx' PARSE SOURCE .bsf4rexx~opSys1 =opsys~left(1)~upper -- save operating system name's initial letter in uppercase .bsf4rexx~opSys2 =opsys~left(2)~upper -- save operating system name's first two letters in uppercase @@ -3696,5 +3697,11 @@ -- to Rexx are not safe anymore ::routine BSF.terminateRexxEngine public re=bsf.wrap(bsf('getRexxEngine')) - re~terminate -- will not terminate the primodal Rexx interpreter instance! + re~terminate -- terminate Rexx interpreter instance to inhibit callbacks from Java + + signal on syntax -- if terminated, we now get a syntax error by BSF() return re~isTerminated -- indicate whether terminating the Rexx engine was successful +syntax: + return .true -- terminated successfully + + Modified: trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt =================================================================== --- trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2014-05-15 19:54:16 UTC (rev 199) +++ trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2014-05-17 17:13:45 UTC (rev 200) @@ -1,3 +1,17 @@ +-------------------------------------- 2014-05-17 ---------------------------------- + +- BSF4ooRexx.cc + + - simplified attaching/detaching to the JVM, a side effect will be a slight performance + improvement (appr. 5%) + + +- BSF.CLS + + - adjust public routine BSF.terminateRexxEngine() to new behaviour (will return .true, + if termination was carried out already, such that message isTerminated cannot be + carried out anymore, causing a Rexx condition) + -------------------------------------- 2014-05-15 ---------------------------------- - BSF4ooRexx.cc Modified: trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc =================================================================== --- trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc 2014-05-15 19:54:16 UTC (rev 199) +++ trunk/bsf4oorexx.dev/source_cc/BSF4ooRexx.cc 2014-05-17 17:13:45 UTC (rev 200) @@ -24,6 +24,10 @@ * * last change: $Revision: 888 $ $Author: Administrator $ $Date: 2010-08-16 16:02:21 +0200 (Mon, 16. Aug 2010) $ + 4.5.0 2014-05-17, - simplified attaching/detaching to the JVM, a side effect will be a slight performance + improvement (appr. 5%) + - replace deprecated BSFAttachToTID() and BSFDetach() with body that always returns true + 4.5.0 2014-05-15, - do not report deprecated BSFAttachToTID() and BSFDetach() anymore 4.5.0 2014-04-03, - make sure that BSFDetach() does not detach from the primodal thread @@ -660,6 +664,7 @@ #define DEBUG_RGF_PROCESS_J_ARG1 // rgf, 2012-02-07; renamed to RgfJavaObject2RexxObject, 2012-02-18 #define DEBUG_ARRAY_ARGS // rgf, 2012-02-21 + #define DEBUG_RGF_ATTACH_NEW // debug new attach/detach strategy #endif #if defined (__APPLE__) && NIXI // only define, if rexx is started on the main thread and established a CFRunLoop (then awt's event dispatch thread needs to run on a separate thread) @@ -698,6 +703,11 @@ // rgf, 2014-03-30, name of entry into .local for primodal TID (will allow one to attach even if no TID is known to the Rexx programmer) #define LOCAL_PRIMODAL_TID "BSF.PRIMODALTID" + + // rgf, 2014-05-16, prepare and use new attach/detach to/from Java logic +#define RGF_ATTACH_NEW +// #define DEBUG_RGF_ATTACH_NEW // debug new attach/detach strategy + // from: <http://ccollomb.free.fr/blog/?p=30>, rgf, 2009-06-02 // __asm Int 3; // break, popup to break will be shown // DebugBreak(); // break, popup to break will be shown @@ -844,11 +854,11 @@ #if defined (BSF4REXX_32_BIT) - #define BSF_VERSION "450.20140515 org/rexxla/bsf/engines/rexx 32-bit" // version: "MajorNumber"."YYYYMMDD" + #define BSF_VERSION "450.20140517 org/rexxla/bsf/engines/rexx 32-bit" // version: "MajorNumber"."YYYYMMDD" #elif defined (BSF4REXX_64_BIT) - #define BSF_VERSION "450.20140515 org/rexxla/bsf/engines/rexx 64-bit" // version: "MajorNumber"."YYYYMMDD" + #define BSF_VERSION "450.20140517 org/rexxla/bsf/engines/rexx 64-bit" // version: "MajorNumber"."YYYYMMDD" #else - #define BSF_VERSION "450.20140515 org/rexxla/bsf/engines/rexx n/a-bit" // version: "MajorNumber"."YYYYMMDD" + #define BSF_VERSION "450.20140517 org/rexxla/bsf/engines/rexx n/a-bit" // version: "MajorNumber"."YYYYMMDD" #endif #define JAVA_4_REXX "org/rexxla/bsf/engines/rexx/Java4Rexx" // 2005-06-02, supportive Java4Rexx-class @@ -3667,8 +3677,21 @@ long size_STRUCT_PARAM=sizeof(STRUCT_PARAM); // get and memorize size of structure +#ifdef RGF_ATTACH_NEW // ---rgf, 2014-05-16: new (simplified) attach/detach logic + // structure for maintaining thread-related call information + typedef struct _STRUCT_ATTACH_PARAM { + JNIEnv *env; // current JNIEnv or NULL + jobject rajo; // current rajo or NULL + void *riid; // to Rexx instance ID, needed e.g. for looking up rajo + bool bDetach; // TRUE: use DetachCurrentThread(), FALSE: do nothing + int error; // OK==0 + } STRUCT_ATTACH_PARAM; + typedef STRUCT_ATTACH_PARAM *PSTRUCT_ATTACH_PARAM; // pointer to structure + long size_STRUCT_ATTACH_PARAM=sizeof(STRUCT_ATTACH_PARAM); // get and memorize size of structure +#endif + // ============ functions for the above structures (2009-10-03, rgf) // 20091003, rgf: using IsSameObject() for testing rajos, if too burdersome once could @@ -3680,7 +3703,13 @@ // void RgfCreateRexxSyntaxConditionWithJavaThrowable (PSTRUCT_PARAM param, RexxThreadContext *rtc, const char * errorStringPattern); // rgf, 2011-06-04 // RexxStringObject RgfCreateRexxSyntaxConditionWithJavaThrowable (PSTRUCT_PARAM param, RexxThreadContext *rtc, const char * errorStringPattern); // rgf, 2011-06-04 // RexxStringObject RgfCreateRexxSyntaxConditionWithJavaThrowable (PSTRUCT_PARAM param, RexxCallContext *rcc, const char * errorStringPattern); // rgf, 2011-06-04 -RexxStringObject RgfCreateRexxSyntaxConditionWithJavaThrowable (PSTRUCT_PARAM param, int isCallContext, void *argCtxt, const char * errorStringPattern); +RexxStringObject RgfCreateRexxSyntaxConditionWithJavaThrowable ( + #ifdef RGF_ATTACH_NEW + PSTRUCT_ATTACH_PARAM + #else + PSTRUCT_PARAM + #endif + param, int isCallContext, void *argCtxt, const char * errorStringPattern); void removeRAJO(JNIEnv *env, PSTRUCT_RAJO node); void removeNODE(JNIEnv *env, PSTRUCT_NODE node); @@ -3928,7 +3957,191 @@ } +#ifdef RGF_ATTACH_NEW + // Create the Rexx exception message, if something went wrong with environmentAttachTo +inline void createAttachErrorMessageNew(const char *title, char *buf, size_t bufLen, PSTRUCT_ATTACH_PARAM param) +{ + switch (param->error) + { + case 1 : // no JVM + SNPRINTF( buf, bufLen, "%.16s/%.64s: attach error [%d], panic! No JVM available for this Rexx interpreter instance: [%p]", DLLNAME, title, param->error, param->riid ); + break; + + case 2 : // no RAJO + SNPRINTF( buf, bufLen, "%.16s/%.64s: attach error [%d], panic! No Java-RexxAndJava (RAJO) object to interact with available for this Rexx interpreter instance: [%p], jenv=[%p]", DLLNAME, title, param->error, param->riid, param->env ); + break; + + case -1 : // JNI_ERR + SNPRINTF( buf, bufLen, "%.16s/%.64s: attach error [%d], JNI_ERR (\"unknown JNI error\"), Rexx interpreter instance: [%p], rajo: [%p], jenv=[%p]", DLLNAME, title, param->error, param->riid, param->rajo, param->env ); + break; + + case -2 : // JNI_EDETACHED + SNPRINTF( buf, bufLen, "%.16s/%.64s: attach error [%d], JNI_EDETACHED (\"thread detached from the JVM\"), Rexx interpreter instance: [%p], rajo: [%p], jenv=[%p]", DLLNAME, title, param->error, param->riid, param->rajo, param->env ); + break; + + case -3 : // JNI_EVERSION + SNPRINTF( buf, bufLen, "%.16s/%.64s: attach error [%d], JNI_EVERSION (\"JNI version error\"), Rexx interpreter instance: [%p], rajo: [%p], jenv=[%p]", DLLNAME, title, param->error, param->riid, param->rajo, param->env ); + break; + + case -4 : // JNI_EMEM + SNPRINTF( buf, bufLen, "%.16s/%.64s: attach error [%d], JNI_EMEM (\"out of memory\"), Rexx interpreter instance: [%p], rajo: [%p], jenv=[%p]", DLLNAME, title, param->error, param->riid, param->rajo, param->env ); + break; + + case -5 : // JNI_EEXIST + SNPRINTF( buf, bufLen, "%.16s/%.64s: attach error [%d], JNI_EEXIST (\"JVM already exists\"), Rexx interpreter instance: [%p], rajo: [%p], jenv=[%p]", DLLNAME, title, param->error, param->riid, param->rajo, param->env ); + break; + + case -6 : // JNI_EINVAL + SNPRINTF( buf, bufLen, "%.16s/%.64s: attach error [%d], JNI_EINVAL (\"arguments invalid\"), Rexx interpreter instance: [%p], rajo: [%p], jenv=[%p]", DLLNAME, title, param->error, param->riid, param->rajo, param->env ); + break; + + default: + SNPRINTF( buf, bufLen, "%.16s/%.64s: unknown attach error [%d], Rexx interpreter instance: [%p], rajo: [%p], jenv=[%p]", + DLLNAME, title, param->error, param->error, param->riid, param->rajo, param->env ); + } +} + + // Create the Rexx exception message, if something went wrong with environmentAttachToNew +inline RexxStringObject createAttachErrorMessageRSONew(RexxCallContext *rcc, const char *title, PSTRUCT_ATTACH_PARAM param) +{ + char buf[512]; + createAttachErrorMessageNew(title, buf, 512, param); // create the message + RexxStringObject rso=rcc->String(buf); // turn it into a RSO + rcc->SetContextVariable(BSF_ERROR_STRING, rso); // set context error variable + return rso; +} + + + // attaching the current thread to the JVM (attaching does not nest) + // JNI_OK 0 / * success * / + // JNI_ERR (-1) / * unknown error * / + // JNI_EDETACHED (-2) / * thread detached from the VM * / + // JNI_EVERSION (-3) / * JNI version error * / + // JNI_ENOMEM (-4) / * not enough memory * / + // JNI_EEXIST (-5) / * VM already created * / + // JNI_EINVAL (-6) / * invalid arguments * / + // +1 / * no JVM available + // +2 / * no RAJO found for RII * / + + // rgf, 2011-03-19: all of a sudden inline will cause a problem as global variable defaultJVM is + // not addressed correctly anymore, removing inline remedies the situation! + // (i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)) + #ifndef __APPLE__ + inline + #endif + void environmentAttachToNew(PSTRUCT_ATTACH_PARAM param) + { + + if (defaultJVM->jvm == NULL) // no JVM available ! + { + + #if defined (DEBUG_RGF_ATTACH_NEW) + fprintf(stderr, "environmentAttachToNew() - NO JVM! defaultJVM->jvm=[%p], defaultJVM->primodal_rajo=[%p]\n", defaultJVM->jvm, defaultJVM->primodal_rajo); + fflush(stderr); + #endif + + param->error=1; // no JVM available, error ! + return; + } + + // try to find this riid's rajo + for (PSTRUCT_RII i=pRoot_RII; i!=NULL; i=i->next) + { + if (param->riid==i->instance) + { + param->rajo=i->rajo; + + #if defined (DEBUG_RGF_ATTACH_NEW) + fprintf(stderr, "environmentAttachToNew() - found riid=[%p] with rajo=[%p}\n", i->instance, i->rajo); + fflush(stderr); + #endif + break; + } + } + + if (param->rajo == NULL) // no rajo available, error ! + { + param->error=2; + return; + } + + // is this thread already attached, if so get it + if ((param->error=defaultJVM->jvm->GetEnv((void **)¶m->env, USE_DEFINED_JNI_VERSION))==JNI_EDETACHED) + { + // nope, not yet attached, try to attach + if ( (param->error=defaultJVM->jvm->AttachCurrentThread((void **) ¶m->env, (void *) &defaultJavaVMAttachArgs)) != JNI_OK) // attach to JVM + { + #if defined (DEBUG_RGF_ATTACH_NEW) + fprintf(stderr, "environmentAttachToNew() - AttachCurrentThread did NOT work ! :-( :-(, parm->error=[%d]\n", (int) param->error); + fflush(stderr); + #endif + // JNI attach error, return prematurely + return; + } + + #if defined (DEBUG_RGF_ATTACH_NEW) + fprintf(stderr, "environmentAttachToNew() - AttachCurrentThread() WORKED, bDetach=[true]! \n"); + fflush(stderr); + #endif + param->bDetach=true; // Carry out DetachCurrentThread() at the end, if not a RII primodal thread + } + #if defined (DEBUG_RGF_ATTACH_NEW) + else + { + fprintf(stderr, "environmentAttachToNew() - GetEnv() WORKED, bDetach=[false]! \n"); + fflush(stderr); + } + #endif + + + return; + } + + + // --------------------------------------------------------------------------------------- + // - detach from JNIEnv, if bDetach==TRUE + +// rgf, 2011-03-19: all of a sudden inline will cause a problem as global variable defaultJVM is +// not addressed correctly anymore, removing inline remedies the situation! +// (i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)); just make sure this function works correctly under Apple as well +#ifndef __APPLE__ + inline +#endif +void environmentDetachFromNew(PSTRUCT_ATTACH_PARAM param) +{ + #if defined (DEBUG_RGF_ATTACH_NEW) + fprintf(stderr, "environmentDetachFromNew(), param->bDetach=[%d]\n", param->bDetach); + fflush(stderr); + #endif + + if (param->bDetach==true) // do we need to explicitly detach ? (This will detach this thread from the JVM.) + { + + if (defaultJVM->jvm == NULL) // no JVM available ! + { + #if defined (DEBUG_RGF_ATTACH_NEW) + fprintf(stderr, "environmentDetachFromNew() - NO JVM! defaultJVM->jvm=[%p], defaultJVM->primodal_rajo=[%p]\n", defaultJVM->jvm, defaultJVM->primodal_rajo); + fflush(stderr); + #endif + + param->error=1; // no JVM available, error ! + return; + } + param->error=defaultJVM->jvm->DetachCurrentThread(); + #if defined (DEBUG_RGF_ATTACH_NEW) + fprintf(stderr, "environmentDetachFromNew() - carried out DetachCurrentThread(), result=[%d]\n", param->error); + fflush(stderr); + #endif + + } + return; +} + + +#endif + + // Create the Rexx exception message, if something went wrong with environmentAttachTo // - param->error: -1 ... Attach-error, attachResult holds Java error code, raise an exception in caller // -2 ... no rajo found, raise an exception in caller // -3 ... cannot safely use the given RAJO in TID, as actual RAJO is being used in multiple Rexx threads @@ -3944,6 +4157,8 @@ } + + // --------------------------------------------------------------------------------------- // - get JNIEnv, if necessary do a AttachCurrentThread() and remember that we need a (bDetach=TRUE) // - if rajo is NULL get rajo; if a rajo then in any case use addRajoToTID2NODE(), else return NULL @@ -5341,7 +5556,13 @@ // inline RexxStringObject RgfCreateRexxSyntaxConditionWithJavaThrowable (PSTRUCT_PARAM param, RexxCallContext *rcc, const char * errorStringPattern) // isCallContext: 0=ExitContext, 1=CallContext -inline RexxStringObject RgfCreateRexxSyntaxConditionWithJavaThrowable (PSTRUCT_PARAM param, int isCallContext, void *argCtxt, const char * errorStringPattern) +inline RexxStringObject RgfCreateRexxSyntaxConditionWithJavaThrowable ( + #ifdef RGF_ATTACH_NEW + PSTRUCT_ATTACH_PARAM + #else + PSTRUCT_PARAM + #endif + param, int isCallContext, void *argCtxt, const char * errorStringPattern) { // RexxThreadContext *rtc = rcc->threadContext; RexxThreadContext *rtc = (isCallContext==0 ? ((RexxExitContext *) argCtxt)->threadContext @@ -5442,7 +5663,13 @@ // -------------------------------------------- // 2012-02-18, rgf: have an own function to turn a single RexxObjectPtr to the appropriate // Java object and return that -inline jobject RgfRexxObject2JavaObject(PSTRUCT_PARAM param, RexxThreadContext *context, RexxObjectPtr tmpObj) +inline jobject RgfRexxObject2JavaObject( +#ifdef RGF_ATTACH_NEW + PSTRUCT_ATTACH_PARAM +#else + PSTRUCT_PARAM +#endif + param, RexxThreadContext *context, RexxObjectPtr tmpObj) { // get the indicator value; returns "2" (BSF/UNO_PRoxy), "1" (String), "0" (RexxProxy), // "-1" (NULL), "-2" (.nil) @@ -5535,7 +5762,13 @@ // a Java array; meant to be used by BSF(), but also in the exit/command handlers // TODO: after testing with handlers, use it also in BSF(), such that we have a single implementation // -- arrToRemove is optional (hence may be set to NULL) -jobjectArray RgfRexxArray2JavaArray(PSTRUCT_PARAM param, RexxThreadContext *context, RexxArrayObject argArray) +jobjectArray RgfRexxArray2JavaArray( +#ifdef RGF_ATTACH_NEW + PSTRUCT_ATTACH_PARAM +#else + PSTRUCT_PARAM +#endif + param, RexxThreadContext *context, RexxArrayObject argArray) { // *** >>>> ???? #if defined (RGF_INFO_1) || defined (DEBUG_ARRAY_ARGS) // rgf, 20090820 @@ -5867,7 +6100,13 @@ // 2012-02-10, rgf: old Rexx style (i.e. only Rexx strings or empty strings !) // a Java array; meant to be used by BSF(), but also in the exit/command handlers -inline jobjectArray RgfConstrxStringArray2JavaArray(PSTRUCT_PARAM param, RexxThreadContext *context, PCONSTRXSTRING argv, unsigned short argc) +inline jobjectArray RgfConstrxStringArray2JavaArray( +#ifdef RGF_ATTACH_NEW + PSTRUCT_ATTACH_PARAM +#else + PSTRUCT_PARAM +#endif + param, RexxThreadContext *context, PCONSTRXSTRING argv, unsigned short argc) { if (argc==0 || argv==NULL) // no arguments, no pointer to args { @@ -6645,7 +6884,7 @@ // executing // rgf, 2012-02-07: add NULL for rajo and rexxconf as this call path does not // define exit and command handlers for the RII this is safe - RgfAddRexxInterpreterInstanceToList(context->threadContext, NULL, NULL); +// RgfAddRexxInterpreterInstanceToList(context->threadContext, NULL, NULL); // call the static method, which in turn will initialize BSF4Rexx by creating // a BSFManager and having it load the "Rexx" (support) @@ -6683,9 +6922,15 @@ return "-990"; // return prematurely } - init_STRUCT_JVM(jniEnv, defaultJVM, currentJVM); // 20091003, initialize default structure + // rgf, 2014-05-17: "createInterface4Rexx() will save the primodal_rajo and run "init_STRUCT_JVM()"; + // this type of invocation cannot have a Java RII configuration object, hence NULL + RgfAddRexxInterpreterInstanceToList(context->threadContext, defaultJVM->primodal_rajo, NULL); +// TODO: already done? rgf, 20140517 +// init_STRUCT_JVM(jniEnv, defaultJVM, currentJVM); // 20091003, initialize default structure + + #ifdef DEBUG // ---rgf, 2003-04-30 fprintf(stderr, "BsfLoadJava(): about to leave...\n\n"); #endif @@ -6784,11 +7029,21 @@ } +#ifdef RGF_ATTACH_NEW + // STRUCT_ATTACH_PARAM param={env,rajo,riid,bDetach,error}; + STRUCT_ATTACH_PARAM param={0, 0, (void *)context->threadContext->instance, false, 0}; +#else // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error}; STRUCT_PARAM param={0, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, 0}; +#endif RgfAcquireLock(); + +#ifdef RGF_ATTACH_NEW + environmentAttachToNew(¶m); // attach thread to Java +#else environmentAttachTo(¶m, FALSE); // attach to Java +#endif if (param.error== -1) // attaching to Java was not successful, we are in deep troubles ! { @@ -6799,6 +7054,8 @@ return context->String("-997"); } +// TODO: RAJO_TID2NODE structures needed anymore ? + // emtpy RAJO/TID2NODE structures empty_RAJO_TID2NODE_structures(param.env); @@ -7077,10 +7334,15 @@ + // ---rgf, 2014-05-17: not needed anymore (deprecated), return true to allow older programs to continue to run +RexxRoutine1(logical_t, BsfAttachToTID, OPTIONAL_CSTRING, toTID) // 20090505, ---rgf, only a stub for backward compatibility +{ + return true; +} // ---rgf, 2003-08-06: allow Rexx to use the Java environment of another Rexx thread -RexxRoutine1(logical_t, BsfAttachToTID, OPTIONAL_CSTRING, toTID) // 20090505, ---rgf, only a stub for backward compatibility +RexxRoutine1(logical_t, BsfAttachToTID_Old, OPTIONAL_CSTRING, toTID) // 20090505, ---rgf, only a stub for backward compatibility { #ifdef UNIX @@ -7236,6 +7498,13 @@ + // ---rgf, 2014-05-17: not needed anymore (deprecated), return true to allow older programs to continue to run +RexxRoutine0(logical_t, BsfDetach) // 20090505, ---rgf, only a stub for backward compatibility +{ + return true; +} + + // rgf, 2008-07-26 /* Removes the TID2JRST entry with current TID. If removal was possible, return .true, else .false (indicating that no Java environment was attached to this TID). @@ -7247,7 +7516,7 @@ */ // APIRET APIENTRY BsfDetach ( PSZ name, LONG numargs, RXSTRING args[], PSZ queuename, PRXSTRING retstr ) -RexxRoutine0(logical_t, BsfDetach) // 20090505, ---rgf, only a stub for backward compatibility +RexxRoutine0(logical_t, BsfDetach_Old) // 20090505, ---rgf, only a stub for backward compatibility { #ifdef UNIX pthread_t @@ -7455,88 +7724,115 @@ RexxObjectPtr r_userData=(context->ArrayAt(argArray, 2)!=NULL ? context->ArrayAt(argArray,2) : NULL); +#ifdef RGF_ATTACH_NEW + // STRUCT_ATTACH_PARAM param={env,rajo,riid,bDetach,error}; + STRUCT_ATTACH_PARAM param={0, 0, (void *)context->threadContext->instance, false, 0}; +#else // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error}; STRUCT_PARAM param={tid, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, 0}; +#endif + RgfAcquireLock(); - environmentAttachTo(¶m, FALSE); // attach to Java - // - param->error: -1 ... Attach-error, attachResult holds Java error code, raise an exception in caller - // -2 ... no rajo found, raise an exception in caller - // -3 ... cannot safely use the given RAJO in TID, as actual RAJO is being used in multiple Rexx threads - // -4 ... cannot attach to target TID - // -99 ... no JVM available ! +#ifdef RGF_ATTACH_NEW + environmentAttachToNew(¶m); // attach to Java -#ifdef DEBUG_JAVA_ATTACH_DETACH - fprintf(stderr, "---> BSFCreateRexxProxy() // 1--> param.error=[%d]\n", param.error); fflush(stderr); -#endif - if (param.error==-2) // ---rgf, 2014-03-30: thread not attached, use primodal TID + if (param.error!= 0) // problem attaching, cannot proceed { + context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, + createAttachErrorMessageRSONew(context, "routine/BsfCreateRexxProxy(), error 3", ¶m) + ); RgfReleaseLock(); + delete [] c_rii_ID; + delete [] msg; + return FALSE; + } + RgfReleaseLock(); +#else + environmentAttachTo(¶m, FALSE); // attach to Java - bool bUsingPrimodialTID=false; + // - param->error: -1 ... Attach-error, attachResult holds Java error code, raise an exception in caller + // -2 ... no rajo found, raise an exception in caller + // -3 ... cannot safely use the given RAJO in TID, as actual RAJO is being used in multiple Rexx threads + // -4 ... cannot attach to target TID + // -99 ... no JVM available ! - RexxDirectoryObject localDir = context->GetLocalEnvironment(); // get .local - RexxObjectPtr obj = context->DirectoryAt(localDir, LOCAL_PRIMODAL_TID); - - if (obj==NULL) // NULLOBJECT) + #ifdef DEBUG_JAVA_ATTACH_DETACH + fprintf(stderr, "---> BSFCreateRexxProxy() // 1--> param.error=[%d]\n", param.error); fflush(stderr); + #endif + if (param.error==-2) // ---rgf, 2014-03-30: thread not attached, use primodal TID { - // char msg[256]; - char *msg2=new char[256]; - SNPRINTF(msg2, 256, "%.16s/routine/BsfAttachToTID(), error 3: no TID given, nor %s defined in .local", DLLNAME, LOCAL_PRIMODAL_TID); - context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, context->String(msg2)); - delete [] msg2; + RgfReleaseLock(); - delete [] c_rii_ID; - delete [] msg; - return FALSE; - } + bool bUsingPrimodialTID=false; - char *toTID=(char *) context->CString(context->ObjectToString(obj)); - bUsingPrimodialTID=true; + RexxDirectoryObject localDir = context->GetLocalEnvironment(); // get .local + RexxObjectPtr obj = context->DirectoryAt(localDir, LOCAL_PRIMODAL_TID); - unsigned long attachToTID=0; + if (obj==NULL) // NULLOBJECT) + { + // char msg[256]; + char *msg2=new char[256]; + SNPRINTF(msg2, 256, "%.16s/routine/BsfAttachToTID(), error 3: no TID given, nor %s defined in .local", DLLNAME, LOCAL_PRIMODAL_TID); + context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, context->String(msg2)); + delete [] msg2; - sscanf(toTID, "%lu", &attachToTID); // get integer value from string + delete [] c_rii_ID; + delete [] msg; + return FALSE; + } - // now try to attach - // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error,attach2tid}; - STRUCT_PARAM param2={tid, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, - ( - #ifdef UNIX - pthread_t - #else - TID - #endif - ) - attachToTID }; + char *toTID=(char *) context->CString(context->ObjectToString(obj)); + bUsingPrimodialTID=true; - RgfAcquireLock(); - environmentAttachTo(¶m2, TRUE); // attach to Java, keep attached + unsigned long attachToTID=0; - param=param2; // copy param2 fields to param to let the checking go on + sscanf(toTID, "%lu", &attachToTID); // get integer value from string -#ifdef DEBUG_JAVA_ATTACH_DETACH - fprintf(stderr, "---> BSFCreateRexxProxy() // 2 --> used primodal TID! param.error=[%d], param2.error=[%d]\n", param.error, param2.error); fflush(stderr); -#endif - } + // now try to attach + // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error,attach2tid}; + STRUCT_PARAM param2={tid, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, + ( + #ifdef UNIX + pthread_t + #else + TID + #endif + ) + attachToTID }; + RgfAcquireLock(); + environmentAttachTo(¶m2, TRUE); // attach to Java, keep attached - if (param.error!= 0) // problem attaching, cannot proceed - { - context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, - createAttachErrorMessageRSO(context, "routine/BsfCreateRexxProxy(), error 3", ¶m) - ); - if (param.error != -1) // if attaching worked, we need to make sure that we detach as ell + param=param2; // copy param2 fields to param to let the checking go on + + #ifdef DEBUG_JAVA_ATTACH_DETACH + fprintf(stderr, "---> BSFCreateRexxProxy() // 2 --> used primodal TID! param.error=[%d], param2.error=[%d]\n", param.error, param2.error); fflush(stderr); + #endif + } + + + if (param.error!= 0) // problem attaching, cannot proceed { - environmentDetachFrom(¶m, FALSE); // detach from Java + context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, + createAttachErrorMessageRSO(context, "routine/BsfCreateRexxProxy(), error 3", ¶m) + ); + if (param.error != -1) // if attaching worked, we need to make sure that we detach as ell + { + environmentDetachFrom(¶m, FALSE); // detach from Java + } + RgfReleaseLock(); + delete [] c_rii_ID; + delete [] msg; + return FALSE; } RgfReleaseLock(); - delete [] c_rii_ID; - delete [] msg; - return FALSE; - } - RgfReleaseLock(); + + // <--- old-attach +#endif + + // create a Java RexxProxy jobject j_rexxProxy=RgfCreateRexxProxy (param.env, param.rajo, context->threadContext, // ThreadContext, RMG: 20090514 @@ -7623,15 +7919,20 @@ { RexxStringObject rso=RgfCreateRexxSyntaxConditionWithJavaThrowable (¶m, - 1, // RexxCallContext - context, - "%.16s/routine/BsfCreateRexxProxy(), error 4: Java exception occurred: [%s]"); + 1, // RexxCallContext + context, + "%.16s/routine/BsfCreateRexxProxy(), error 4: Java exception occurred: [%s]"); param.env->DeleteLocalRef(j_rexxProxy); param.env->DeleteLocalRef(jarr); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); +#endif + RgfReleaseLock(); delete [] c_rii_ID; @@ -7678,7 +7979,13 @@ param.env->DeleteLocalRef(j_bsfRegistryKey); RgfAcquireLock(); + +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); +#endif + RgfReleaseLock(); #if defined (RGF_INFO) || defined (DEBUG_REXX_PROXY) @@ -7913,16 +8220,22 @@ // ??? TODO: attach to Java, carry out conversions, return result - +#ifdef RGF_ATTACH_NEW + // STRUCT_ATTACH_PARAM param={env,rajo,riid,bDetach,error}; + STRUCT_ATTACH_PARAM param={0, 0, (void *)context->threadContext->instance, false, 0}; +#else // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error}; STRUCT_PARAM param={tid, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, 0}; +#endif + RgfAcquireLock(); + +#ifdef RGF_ATTACH_NEW + environmentAttachToNew(¶m); // attach to Java +#else environmentAttachTo(¶m, FALSE); // attach to Java -#ifdef DEBUG_JAVA_ATTACH_DETACH - fprintf(stderr, "---> BSFRawBytes() // 1--> param.error=[%d]\n", param.error); fflush(stderr); -#endif if (param.error==-2) // ---rgf, 2014-03-30: thread not attached, use primodal TID { RgfReleaseLock(); @@ -7969,13 +8282,25 @@ #endif } +#endif + +#ifdef DEBUG_JAVA_ATTACH_DETACH + fprintf(stderr, "---> BSFRawBytes() // 1--> param.error=[%d]\n", param.error); fflush(stderr); +#endif + + // if (param.error== -1) // could not attach to Java if (param.error!=0) // rgf, 2014-03-30, problem attaching, cannot proceed { RgfReleaseLock(); context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, - createAttachErrorMessageRSO(context, "routine/BsfRawBytes(), error 2", ¶m) +#ifdef RGF_ATTACH_NEW + createAttachErrorMessageRSONew +#else + createAttachErrorMessageRSO +#endif + (context, "routine/BsfRawBytes(), error 2", ¶m) ); return context->Nil(); // not attached, hence no detaching ! } @@ -8132,7 +8457,13 @@ } RgfAcquireLock(); + +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif + RgfReleaseLock(); return result_Obj; @@ -8254,84 +8585,104 @@ } */ +#ifdef RGF_ATTACH_NEW + // STRUCT_ATTACH_PARAM param={env,rajo,riid,bDetach,error}; + STRUCT_ATTACH_PARAM param={0, 0, (void *)context->threadContext->instance, false, 0}; +#else // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error}; STRUCT_PARAM param={tid, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, 0}; +#endif + RgfAcquireLock(); + +#ifdef RGF_ATTACH_NEW + environmentAttachToNew(¶m); // attach to Java +#else environmentAttachTo(¶m, FALSE); // attach to Java - // - param->error: -1 ... Attach-error, attachResult holds Java error code, raise an exception in caller - // -2 ... no rajo found, raise an exception in caller - // -3 ... cannot safely use the given RAJO in TID, as actual RAJO is being used in multiple Rexx threads - // -4 ... cannot attach to target TID - // -99 ... no JVM available ! + // - param->error: -1 ... Attach-error, attachResult holds Java error code, raise an exception in caller + // -2 ... no rajo found, raise an exception in caller + // -3 ... cannot safely use the given RAJO in TID, as actual RAJO is being used in multiple Rexx threads + // -4 ... cannot attach to target TID + // -99 ... no JVM available ! - // error '-99' may may happen, if BsfUnloadJava() was called and UNINIT operations on BSF proxies - // get triggered, which would unregister the counterpart Java objects from the BSFRegistry; - // this lets Rexx shutdown gracefully + // error '-99' may may happen, if BsfUnloadJava() was called and UNINIT operations on BSF proxies + // get triggered, which would unregister the counterpart Java objects from the BSFRegistry; + // this lets Rexx shutdown gracefully -#ifdef DEBUG_JAVA_ATTACH_DETACH - fprintf(stderr, "---> BSF() // 1 --> param.error=[%d]\n", param.error); fflush(stderr); -#endif + #ifdef DEBUG_JAVA_ATTACH_DETACH + fprintf(stderr, "---> BSF() // 1 --> param.error=[%d]\n", param.error); fflush(stderr); + #endif - if (param.error==-2) // ---rgf, 2014-03-30: thread not attached, use primodal TID - { - RgfReleaseLock(); + if (param.error==-2) // ---rgf, 2014-03-30: thread not attached, use primodal TID + { + RgfReleaseLock(); - bool bUsingPrimodialTID=false; + bool bUsingPrimodialTID=false; - RexxDirectoryObject localDir = context->GetLocalEnvironment(); // get .local - RexxObjectPtr obj = context->DirectoryAt(localDir, LOCAL_PRIMODAL_TID); + RexxDirectoryObject localDir = context->GetLocalEnvironment(); // get .local + RexxObjectPtr obj = context->DirectoryAt(localDir, LOCAL_PRIMODAL_TID); - if (obj==NULL) // NULLOBJECT) - { - // char msg2[256]; - char *msg2=new char[256]; - SNPRINTF(msg2, 256, "%.16s/routine/BsfAttachToTID(), error 3: no TID given, nor %s defined in .local", DLLNAME, LOCAL_PRIMODAL_TID); - context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, context->String(msg2)); - delete[] msg2; + if (obj==NULL) // NULLOBJECT) + { + // char msg2[256]; + char *msg2=new char[256]; + SNPRINTF(msg2, 256, "%.16s/routine/BsfAttachToTID(), error 3: no TID given, nor %s defined in .local", DLLNAME, LOCAL_PRIMODAL_TID); + context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, context->String(msg2)); + delete[] msg2; - delete[] msg; - return FALSE; - } + delete[] msg; + return FALSE; + } - char *toTID=(char *) context->CString(context->ObjectToString(obj)); - bUsingPrimodialTID=true; + char *toTID=(char *) context->CString(context->ObjectToString(obj)); + bUsingPrimodialTID=true; - unsigned long attachToTID=0; + unsigned long attachToTID=0; - sscanf(toTID, "%lu", &attachToTID); // get integer value from string + sscanf(toTID, "%lu", &attachToTID); // get integer value from string - // now try to attach - // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error,attach2tid}; - STRUCT_PARAM param2={tid, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, - ( - #ifdef UNIX - pthread_t - #else - TID - #endif - ) - attachToTID}; + // now try to attach + // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error,attach2tid}; + STRUCT_PARAM param2={tid, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, + ( + #ifdef UNIX + pthread_t + #else + TID + #endif + ) + attachToTID}; - RgfAcquireLock(); - environmentAttachTo(¶m2, TRUE); // attach to Java, keep attached + RgfAcquireLock(); + environmentAttachTo(¶m2, TRUE); // attach to Java, keep attached - param=param2; // copy param2 fields to param to let the checking go on + param=param2; // copy param2 fields to param to let the checking go on -#ifdef DEBUG_JAVA_ATTACH_DETACH - fprintf(stderr, "---> BSF() // 2 --> used primodal TID! param.error=[%d], param2.error=[%d]\n", param.error, param2.error); fflush(stderr); + #ifdef DEBUG_JAVA_ATTACH_DETACH + fprintf(stderr, "---> BSF() // 2 --> used primodal TID! param.error=[%d], param2.error=[%d]\n", param.error, param2.error); fflush(stderr); + #endif + + } + #endif - } if (param.error!= 0) // problem attaching, cannot proceed { context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, - createAttachErrorMessageRSO(context, "routine/BsfCreateRexxProxy(), error 3", ¶m) +#ifdef RGF_ATTACH_NEW + createAttachErrorMessageRSONew +#else + createAttachErrorMessageRSO +#endif + (context, "routine/BsfCreateRexxProxy(), error 3", ¶m) ); if (param.error != -1) // if attaching worked, we need to make sure that we detach as well { +#ifndef RGF_ATTACH_NEW environmentDetachFrom(¶m, FALSE); // detach from Java +#endif } RgfReleaseLock(); delete[] msg; @@ -8571,7 +8922,12 @@ param.env->DeleteLocalRef(j_returnValue); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif + RgfReleaseLock(); delete[] msg; @@ -8592,7 +8948,11 @@ { // int rndRes=RgfNewDetach(); // detach from thread RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); #if defined (DEBUG_BSF_FUNCTION) @@ -8608,7 +8968,11 @@ param.env->DeleteLocalRef(j_returnValue); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); #if defined (DEBUG_BSF_FUNCTION) @@ -8750,65 +9114,78 @@ // ------------------------------------------------------------------------------------ // attach to Java thread +#ifdef RGF_ATTACH_NEW + // STRUCT_ATTACH_PARAM param={env,rajo,riid,bDetach,error}; + STRUCT_ATTACH_PARAM param={0, 0, (void *)context->threadContext->instance, false, 0}; +#else // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error}; STRUCT_PARAM param={tid, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, 0}; +#endif + RgfAcquireLock(); + +#ifdef RGF_ATTACH_NEW + environmentAttachToNew(¶m); // attach to Java +#else environmentAttachTo(¶m, FALSE); // attach to Java -#ifdef DEBUG_JAVA_ATTACH_DETACH - fprintf(stderr, "---> BSFJavaException() // 1 --> param.error=[%d]\n", param.error); fflush(stderr); -#endif + #ifdef DEBUG_JAVA_ATTACH_DETACH + fprintf(stderr, "---> BSFJavaException() // 1 --> param.error=[%d]\n", param.error); fflush(stderr); + #endif - if (param.error==-2) // ---rgf, 2014-03-30: thread not attached, use primodal TID - { - RgfReleaseLock(); + if (param.error==-2) // ---rgf, 2014-03-30: thread not attached, use primodal TID + { + RgfReleaseLock(); - bool bUsingPrimodialTID=false; + bool bUsingPrimodialTID=false; - RexxDirectoryObject localDir = context->GetLocalEnvironment(); // get .local - RexxObjectPtr obj = context->DirectoryAt(localDir, LOCAL_PRIMODAL_TID); + RexxDirectoryObject localDir = context->GetLocalEnvironment(); // get .local + RexxObjectPtr obj = context->DirectoryAt(localDir, LOCAL_PRIMODAL_TID); - if (obj==NULL) // NULLOBJECT) - { - // char msg2[256]; - char *msg2=new char[256]; - SNPRINTF(msg2, 256, "%.16s/routine/BsfAttachToTID(), error 3: no TID given, nor %s defined in .local", DLLNAME, LOCAL_PRIMODAL_TID); - context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, context->String(msg2)); - delete[] msg2; + if (obj==NULL) // NULLOBJECT) + { + // char msg2[256]; + char *msg2=new char[256]; + SNPRINTF(msg2, 256, "%.16s/routine/BsfAttachToTID(), error 3: no TID given, nor %s defined in .local", DLLNAME, LOCAL_PRIMODAL_TID); + context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, context->String(msg2)); + delete[] msg2; - delete[] msg; - return FALSE; - } + delete[] msg; + return FALSE; + } - char *toTID=(char *) context->CString(context->ObjectToString(obj)); - bUsingPrimodialTID=true; + char *toTID=(char *) context->CString(context->ObjectToString(obj)); + bUsingPrimodialTID=true; - unsigned long attachToTID=0; + unsigned long attachToTID=0; - sscanf(toTID, "%lu", &attachToTID); // get integer value from string + sscanf(toTID, "%lu", &attachToTID); // get integer value from string - // now try to attach - // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error,attach2tid}; - STRUCT_PARAM param2={tid, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, - ( - #ifdef UNIX - pthread_t - #else - TID - #endif - ) - attachToTID}; + // now try to attach + // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error,attach2tid}; + STRUCT_PARAM param2={tid, 0, 0, (void *)context->threadContext->instance, 0, 0, 0, + ( + #ifdef UNIX + pthread_t + #else + TID + #endif + ) + attachToTID}; - RgfAcquireLock(); - environmentAttachTo(¶m2, TRUE); // attach to Java, keep attached + RgfAcquireLock(); + environmentAttachTo(¶m2, TRUE); // attach to Java, keep attached - param=param2; // copy param2 fields to param to let the checking go on + param=param2; // copy param2 fields to param to let the checking go on -#ifdef DEBUG_JAVA_ATTACH_DETACH - fprintf(stderr, "---> BSFJavaException() // 2 --> used primodal TID! param.error=[%d], param2.error=[%d]\n", param.error, param2.error); fflush(stderr); + #ifdef DEBUG_JAVA_ATTACH_DETACH + fprintf(stderr, "---> BSFJavaException() // 2 --> used primodal TID! param.error=[%d], param2.error=[%d]\n", param.error, param2.error); fflush(stderr); + #endif + } #endif - } + + // - param->error: -1 ... Attach-error, attachResult holds Java error code, raise an exception in caller // -2 ... no rajo found, raise an exception in caller // -3 ... cannot safely use the given RAJO in TID, as actual RAJO is being used in multiple Rexx threads @@ -8817,12 +9194,19 @@ if (param.error!= 0) // problem attaching, cannot proceed { context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, - createAttachErrorMessageRSO(context, "routine/BsfJavaException(), error 3", ¶m) +#ifdef RGF_ATTACH_NEW + createAttachErrorMessageRSONew +#else + createAttachErrorMessageRSO +#endif + (context, "routine/BsfJavaException(), error 3", ¶m) ); +#ifndef RGF_ATTACH_NEW if (param.error != -1) // if attaching worked, we need to make sure that we detach as ell { environmentDetachFrom(¶m, FALSE); // detach from Java } +#endif RgfReleaseLock(); delete[] msg; return FALSE; @@ -8863,7 +9247,12 @@ context->RaiseException1(Rexx_Error_Incorrect_call_user_defined, rso); */ RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); +#endif + RgfReleaseLock(); delete[] msg; @@ -8955,7 +9344,11 @@ } RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // detach from Java +#endif RgfReleaseLock(); delete[] msg; return result_Obj; @@ -9348,8 +9741,11 @@ // 20091005: this is loaded via Rexx, keep this JNIEnv *daemEnv; + RgfAcquireLock(); int res=defaultJVM->jvm->AttachCurrentThreadAsDaemon((void **) &daemEnv, (void *) &defaultJavaVMAttachArgs); + RgfReleaseLock(); +/* // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error}; STRUCT_PARAM param={tid, daemEnv, defaultJVM->primodal_rajo, NULL, 0, 0, 0, 0}; #if defined (RGF_INFO) || defined (RGF_JNI) @@ -9362,6 +9758,9 @@ } RgfAcquireLock(); + +// TODO: rgf, 20140517, add #ifdef RGF_ATTACH_NEW !! + environmentAttachTo(¶m, TRUE); // attach to Java, force staying around after next environmentDetachFrom() ! #if defined (RGF_INFO) || defined (RGF_JNI) @@ -9374,7 +9773,9 @@ fprintf(stderr, "... _jniInitialize4Rexx #3 pre: defaultJVM->jvm=[%p]\n", defaultJVM->jvm);fflush(stderr); dumpPARAM("... _jniInitialize4Rexx #3 (after environmentDetachFrom(¶m, FALSE))", ¶m); #endif + RgfReleaseLock(); +*/ #if defined (RGF_INFO) || defined (RGF_JNI) @@ -12454,6 +12855,8 @@ // char msg[1024]=""; char *msg=new char[1024]; + +// TODO: rgf, 20140517, do we really still need this? // get the RII structure to get access to RexxInstance *ri=context->threadContext->instance; PSTRUCT_RII struRii=RgfGetRexxInterpreterInstanceStructFromList(ri); @@ -12478,19 +12881,35 @@ // TODO: attach to Java, get RexxConfiguration, use getExitHandler(int), invoke handler, if not null & check result // ----------------------------------------- +#ifdef RGF_ATTACH_NEW + // STRUCT_ATTACH_PARAM param={env,rajo,riid,bDetach,error}; + STRUCT_ATTACH_PARAM param={0, 0, (void *) context->threadContext->instance, false, 0}; +#else // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error}; STRUCT_PARAM param={0, 0, struRii->rajo, (void *)ri, 0, 0, 0, 0}; +#endif RgfAcquireLock(); + +#ifdef RGF_ATTACH_NEW + environmentAttachToNew(¶m); // attach to Java +#else environmentAttachTo(¶m, FALSE); // attach to Java +#endif #if defined ( DEBUG_SHOW_STRUCTURES ) dumpPARAM( "rexx_command_exit_entry(), after environmentAttachTo(...): param:", ¶m); - dumpRAJO( "rexx_command_exit_entry(), after environmentAttachTo(...), 1: "); - dumpTID2NODE("rexx_command_exit_entry(), after environmentAttachTo(...), 1: "); + #ifdef RGF_ATTACH_NEW + dumpRAJO( "rexx_command_exit_entry(), after environmentAttachTo(...), 1: "); + dumpTID2NODE("rexx_command_exit_entry(), after environmentAttachTo(...), 1: "); + #endif #endif - if (param.error== -1) // could not attach to Java +#ifdef RGF_ATTACH_NEW + if (param.error != 0) // could not attach to Java +#else + if (param.error== -1) // could not attach to Java +#endif { #if defined ( RGF_SYSTEM_EXIT_HANDLER ) if (exitNumber==RXINI || exitNumber==RXTER) @@ -12530,7 +12949,11 @@ context, msg); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); delete[] msg; return RXEXIT_RAISE_ERROR; @@ -12546,7 +12969,11 @@ } #endif RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); #if defined ( RGF_INFO ) || defined ( RGF_SYSTEM_EXIT_HANDLER ) @@ -13158,7 +13585,13 @@ param.env->DeleteLocalRef(jpb); RgfAcquireLock(); + +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif + RgfReleaseLock(); delete[] msg; return RXEXIT_NOT_HANDLED; @@ -13177,7 +13610,11 @@ } #endif RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); delete[] msg; return RXEXIT_RAISE_ERROR; @@ -13220,7 +13657,11 @@ param.env->DeleteLocalRef(jpb); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); SNPRINTF(msg, 1024, "%.16s/internal/rexx_exit_handler_entry(), error 4: Java exception, cannot find the Java Rexx exit handler method named [%s], needed for processing the Rexx system exit number=[%d], subfunction=[%d]", @@ -13264,7 +13705,11 @@ param.env->DeleteLocalRef(jpb); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); delete[] msg; return RXEXIT_RAISE_ERROR; @@ -13285,7 +13730,11 @@ param.env->DeleteLocalRef(jpb); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); delete[] msg; return RXEXIT_RAISE_ERROR; @@ -13848,7 +14297,11 @@ RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); // ----------------------------------------- @@ -13907,16 +14360,28 @@ return NULL; } +#ifdef RGF_ATTACH_NEW + // STRUCT_ATTACH_PARAM param={env,rajo,riid,bDetach,error}; + STRUCT_ATTACH_PARAM param={0, 0, (void *)context->threadContext->instance, false, 0}; +#else // STRUCT_PARAM param={tid,env,rajo,riid,bDetach,attachResult,error}; STRUCT_PARAM param={0, 0, struRii->rajo, (void *)ri, 0, 0, 0, 0}; +#endif RgfAcquireLock(); + +#ifdef RGF_ATTACH_NEW + environmentAttachToNew(¶m); // attach to Java +#else environmentAttachTo(¶m, FALSE); // attach to Java +#endif #if defined ( DEBUG_SHOW_STRUCTURES ) dumpPARAM( "rexx_command_handler_entry(), after environmentAttachTo(...): param:", ¶m); - dumpRAJO( "rexx_command_handler_entry(), after environmentAttachTo(...), 1: "); - dumpTID2NODE("rexx_command_handler_entry(), after environmentAttachTo(...), 1: "); + #ifdef RGF_ATTACH_NEW + dumpRAJO( "rexx_command_handler_entry(), after environmentAttachTo(...), 1: "); + dumpTID2NODE("rexx_command_handler_entry(), after environmentAttachTo(...), 1: "); + #endif #endif if (param.error== -1) // could not attach to Java @@ -13954,7 +14419,13 @@ param.env->DeleteLocalRef(jhandler); RgfAcquireLock(); + +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif + RgfReleaseLock(); delete[] msg; return NULL; @@ -13965,7 +14436,11 @@ param.env->DeleteLocalRef(jaddress); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); SNPRINTF(msg, 1024, "%.16s/internal/rexx_command_handler_entry(), error 4: cannot find Java command handler (returned \"NULL\") for command name/address=[%s]", @@ -14040,7 +14515,11 @@ param.env->DeleteLocalRef(jcommand); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); SNPRINTF(msg, 1024, "%.16s/internal/rexx_command_handler_entry(), error 5: Java exception, cannot find the Java Rexx exit handler method named [%s], needed for processing the command addressed to: [%s]", @@ -14079,7 +14558,11 @@ param.env->DeleteLocalRef(jresult); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); delete[] msg; return NULL; @@ -14095,7 +14578,11 @@ param.env->DeleteLocalRef(jresult); RgfAcquireLock(); +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); delete[] msg; return NULL; @@ -14117,7 +14604,11 @@ param.env->DeleteLocalRef(jresult); RgfAcquireLock(); - environmentDetachFrom(¶m, FALSE); // do not close group +#ifdef RGF_ATTACH_NEW + environmentDetachFromNew(¶m); +#else + environmentDetachFrom(¶m, FALSE); // do not close group +#endif RgfReleaseLock(); #if defined ( RGF_INFO ) // || defined ( RGF_COMMAND_HANDLER ) @@ -14522,7 +15013,14 @@ fprintf(stderr, "==> ==> 2/ Java_org_rexxla_bsf_engines_rexx_RexxAndJava_jniGetConditionInfo rop=[%p] <== <==\n",rop); #endif + +#ifdef RGF_ATTACH_NEW + // STRUCT_ATTACH_PARAM param={env,rajo,riid,bDetach,error}; + STRUCT_ATTACH_PARAM param={env, rajo, 0, false, 0}; +#else STRUCT_PARAM param={0, env, rajo, 0, 0, 0, 0, 0}; +#endif + jobject jobj=RgfRexxObject2JavaObject(¶m,context->threadContext,rop); #if defined (DEBUG_JNI) @@ -14685,7 +15183,13 @@ RexxExitContext *context=(RexxExitContext *) rgfUnwrapPointer(env, (jstring) env->GetObjectArrayElement(j_slot, (jint) 2)); RexxObjectPtr rop=context->GetCallerContext(); +#ifdef RGF_ATTACH_NEW + // STRUCT_ATTACH_PARAM param={env,rajo,riid,bDetach,error}; + STRUCT_ATTACH_PARAM param={env, rajo, 0, false, 0}; +#else STRUCT_PARAM param={0, env, rajo, 0, 0, 0, 0, 0}; +#endif + jobject jobj=RgfRexxObject2JavaObject(¶m,context->threadContext,rop); #if defined (DEBUG_JNI) @@ -14717,7 +15221,13 @@ RexxExitContext *context=(RexxExitContext *) rgfUnw... [truncated message content] |
From: <or...@us...> - 2014-05-24 12:27:29
|
Revision: 205 http://sourceforge.net/p/bsf4oorexx/code/205 Author: orexx Date: 2014-05-24 12:27:24 +0000 (Sat, 24 May 2014) Log Message: ----------- 20140524 Add getCause() to BSFException, add latest version of ooRexxTry.rxj by G. Leitner Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/bsf4oorexx.dev/bin/BSF.CLS trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll trunk/bsf4oorexx.dev/utilities/ooRexxTry.rxj trunk/createDistributionForBSF4ooRexx4.cmd trunk/org/apache/bsf/BSFException.class trunk/org/apache/bsf/BSFException.java Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/bin/BSF.CLS =================================================================== --- trunk/bsf4oorexx.dev/bin/BSF.CLS 2014-05-18 17:03:24 UTC (rev 204) +++ trunk/bsf4oorexx.dev/bin/BSF.CLS 2014-05-24 12:27:24 UTC (rev 205) @@ -423,7 +423,7 @@ call initialize.BSF.dir -- set up .bsf4rexx and its synonym .b4r - .bsf4rexx~version="450.20140518" -- set version (date distribution got created) + .bsf4rexx~version="450.20140524" -- set version (date distribution got created) .bsf4rexx~opSys =opsys -- save operating system name as supplied by Rexx' PARSE SOURCE .bsf4rexx~opSys1 =opsys~left(1)~upper -- save operating system name's initial letter in uppercase .bsf4rexx~opSys2 =opsys~left(2)~upper -- save operating system name's first two letters in uppercase Modified: trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt =================================================================== --- trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2014-05-18 17:03:24 UTC (rev 204) +++ trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2014-05-24 12:27:24 UTC (rev 205) @@ -1,3 +1,10 @@ +-------------------------------------- 2014-05-21 ---------------------------------- + +- BSFException.java + - add getCause() method as synonym for getTargetException(), which makes it + orthogonal with Throwable's getCause() that got introduced since defining + BSFException + -------------------------------------- 2014-05-17 ---------------------------------- - BSF4ooRexx.cc Modified: trunk/bsf4oorexx.dev/source_cc/32/BSF4ooRexx.dll =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/utilities/ooRexxTry.rxj =================================================================== --- trunk/bsf4oorexx.dev/utilities/ooRexxTry.rxj 2014-05-18 17:03:24 UTC (rev 204) +++ trunk/bsf4oorexx.dev/utilities/ooRexxTry.rxj 2014-05-24 12:27:24 UTC (rev 205) @@ -69,9 +69,8 @@ */ /*----------------------------------------------------------------------------*/ -/* Copyright 2011 Markus Moldaschl, 2011-2014 Rony G. Flatscher */ -/* Gerald Leitner, 2014 */ -/* */ +/* Copyright 2011 Markus Moldaschl, 2011-2012 Rony G. Flatscher */ +/* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ /* You may obtain a copy of the License at */ @@ -126,7 +125,6 @@ /*----------------------------------------------------------------------------*/ -call makeBSF4ooRexxLookLikeMacOSX -- make sure that on MacOSX the application looks like a Mac application /** * name: main program @@ -181,6 +179,11 @@ call dontBSFExit -- do not carry out a bsf.exit as this would abort this program as well call importClasses -- Import all utilized java classes call LoadEnvironment -- Set up the environment to work with +.mm.dir~rexxinst = 0 -- index of rexx interpreter instance +.mm.dir~code_version = 0 -- index of code version +.mm.dir~hcque = .Cirqqueue~new /* G.LEITNER */ +.mm.dir~hcque~setsize(50) /* G.LEITNER */ +call makenewinterpreter -- make a rexx interpreter with exit handler for the test-code userData~trans = 0 -- no transparency default. -- use instead trans=50 for experimentation with transparency .mm.dir~storage = .Store~new -- Instance, later on used to store code executions @@ -230,9 +233,6 @@ .error~destination(.mm.dir~errfilestream) end -.mm.dir~hcque = .Cirqqueue~new /* G.LEITNER */ -.mm.dir~hcque~setsize(50) /* G.LEITNER */ - .CreateServerSocket~new~~run -- setup up a server socket userData~rexxCloseEH~waitforExit -- wait until we are allowed to end the program @@ -788,6 +788,7 @@ use arg method_name,code, userData .local~mm.dir~Error? = .false signal on syntax name ExecSyntax + if .mm.dir~isdebug == true then say "EXECUTOR: " method_name rt_method = .method~new(method_name, code) return @@ -814,13 +815,25 @@ signal on syntax name RunSyntax .local~mm.dir~run_results = .directory~new + -- GLEITNER: here we see the code for the code history + -- COPYCODECIRCQUEUE + if .mm.dir~isdebug == true then say .mm.dir~code_string + .mm.dir~code_version = .mm.dir~code_version + 1 + + -- nice idea but not supported by java html window + -- htmlstring = "<A NAME="||.mm.dir~code_version||"></A><A HREF=#"||.mm.dir~code_version - 1||">PREV</A> <A HREF=#".mm.dir~code_version + 1||">NEXT</A>" + + .mm.dir~hcque~setelem(TIME("L"),"X","CODE VERSION " .mm.dir~code_version .endOfLine) + .mm.dir~hcque~setelem(TIME("L"),"C",.mm.dir~code_string .endOfLine) + my_result = '' if \.mm.dir~Error? then do -- Run the Code args = arg(1) - self~run:super(rt_method, 'a', args) - + -- self~run:super(rt_method, 'a', args) + if .mm.dir~isdebug == true then say "EXEC METHOD RUN" + .mm.dir~rexxEngine~apply("testcode.code",0,0,.mm.dir~code_string,.nil,.nil) -- Test if there was anything returned by the code if symbol('result') = 'VAR' then my_result = result -- Load the says and returns into environment variables for updating the dialog areas @@ -830,12 +843,7 @@ .mm.dir~storage~storeData(.mm.dir~code_string) - -- GLEITNER: here we see the code for the code history - -- dirty code COPYCODECIRCQUEUE - if .mm.dir~isdebug == true then say .mm.dir~code_string - .mm.dir~hcque~setelem(TIME("L"),"C",.mm.dir~code_string .endOfLine) /* G.LEITNER */ - if .nil \= .mm.dir~run_results['returns'] then .mm.dir~returnsArea~setText(.mm.dir~run_results['returns'])~string @@ -1116,10 +1124,14 @@ userData~rexxCloseEH=rexxCloseEH -- save Rexx event handler for later use userData~rpCloseEH=rpCloseEH -- save RexxProxy for Rexx event handler for later use + rexxNRunEH = .NRun~new + rpNRunEH = BsfCreateRexxProxy(rexxNRunEH, userData, .java.awt.event.ActionListener) + userData~rpNRunEH = rpNRunEH + rexxRunEH = .RunIt~new rpRunEH = BsfCreateRexxProxy(rexxRunEH, userData, .java.awt.event.ActionListener) userData~rpRunEH = rpRunEH - + rexxFileDialogEH = .FileDialog~new rpFileDialogEH = BsfCreateRexxProxy(rexxFileDialogEH, userData, .java.awt.event.ActionListener) userData~rpFileDialogEH = rpFileDialogEH @@ -1306,6 +1318,9 @@ saveAsMenuItem = .javax.swing.JMenuItem~new('Save As ...') saveAsMenuItem~setMnemonic(.java.awt.event.KeyEvent~VK_S) saveAsMenuItem~setAccelerator(.javax.swing.KeyStroke~getKeyStroke(.java.awt.event.KeyEvent~VK_S, .java.awt.Toolkit~getDefaultToolkit~getMenuShortcutKeyMask)) + nrunMenuItem = .javax.swing.JMenuItem~new('NewInstance') + nrunMenuItem~setMnemonic(.java.awt.event.KeyEvent~VK_9) + nrunMenuItem~setAccelerator(.javax.swing.KeyStroke~getKeyStroke(.java.awt.event.KeyEvent~VK_9, .java.awt.Toolkit~getDefaultToolkit~getMenuShortcutKeyMask)) runMenuItem = .javax.swing.JMenuItem~new('Run') runMenuItem~setMnemonic(.java.awt.event.KeyEvent~VK_R) runMenuItem~setAccelerator(.javax.swing.KeyStroke~getKeyStroke(.java.awt.event.KeyEvent~VK_R, .java.awt.Toolkit~getDefaultToolkit~getMenuShortcutKeyMask)) @@ -1329,12 +1344,13 @@ exitMenuItem~setAccelerator(.javax.swing.KeyStroke~getKeyStroke(.java.awt.event.KeyEvent~VK_E, .java.awt.Toolkit~getDefaultToolkit~getMenuShortcutKeyMask)) end newMenuItem~addActionListener(userData~rpClearEH) + nrunMenuItem~addActionListener(userData~rpNRunEH) runMenuItem~addActionListener(userData~rpRunEH) -- historyMenuItem~addActionListener(userData~rpHistoryEH) saveAsMenuItem~addActionListener(userData~rpFileDialogEH) openMenuItem~addActionListener(userData~rpFileDialogEH) exitMenuItem~addActionListener(userData~rpCloseEH) - fileMenu~~insert(newMenuItem, 0)~~insert(openMenuItem, 1)~~insert(saveAsMenuItem, 2)~~insert(runMenuItem, 3)~~insert(GhistoryMenuItem, 4)~~insert(exitMenuItem, 5) + fileMenu~~insert(newMenuItem, 0)~~insert(openMenuItem, 1)~~insert(saveAsMenuItem, 2)~~insert(nrunMenuItem, 3)~~insert(runMenuItem, 4)~~insert(GhistoryMenuItem, 5)~~insert(exitMenuItem, 6) userData~fileMenu = fileMenu editMenu = .javax.swing.JMenu~new("Edit") @@ -1724,7 +1740,7 @@ call attach2java -- make sure we can interact with Java on this thread - .mm.dir~hcque~setelem(TIME("L"),"E",output .endOfLine) /* G.LEITNER */ + -- .mm.dir~hcque~setelem(TIME("L"),"E",output .endOfLine) /* G.LEITNER */ .mm.dir~errorsArea~append(output) .mm.dir~errorsArea~append(.endOfLine) @@ -1819,7 +1835,7 @@ inputArea~setText('') .mm.dir~socketInputRequired = .false self~setControlVar(.false) - .mm.dir~hcque~setelem(TIME("L"),"I",input .endOfLine) /* G.LEITNER */ + -- .mm.dir~hcque~setelem(TIME("L"),"I",input .endOfLine) /* G.LEITNER */ return input end else @@ -1829,7 +1845,7 @@ do input = text inputArea~setText('') - .mm.dir~hcque~setelem(TIME("L"),"I",input .endOfLine) /* G.LEITNER */ + -- .mm.dir~hcque~setelem(TIME("L"),"I",input .endOfLine) /* G.LEITNER */ return input end else @@ -1840,7 +1856,7 @@ inputArea~setText('') self~setControlVar(.false) inputArea~setEditable(.false) - .mm.dir~hcque~setelem(TIME("L"),"I",input .endOfLine) /* G.LEITNER */ + -- .mm.dir~hcque~setelem(TIME("L"),"I",input .endOfLine) /* G.LEITNER */ return input end end @@ -1869,7 +1885,7 @@ then .mm.dir~out~println("[.OUTPUT] "||output) -- Write output data also to client -- connected via socket in case of - .mm.dir~hcque~setelem(TIME("L"),"S",output .endOfLine) /* G.LEITNER */ + -- .mm.dir~hcque~setelem(TIME("L"),"S",output .endOfLine) /* G.LEITNER */ -- enabled direct output. return 0 @@ -1912,7 +1928,7 @@ if .mm.dir~enableOutputSocket & .mm.dir~clientConnected - then .mm.dir~out~println("[.OUTPUT] "||output) - .mm.dir~hcque~setelem(TIME("L"),"O",output .endOfLine) /* G.LEITNER */ + -- .mm.dir~hcque~setelem(TIME("L"),"O",output .endOfLine) /* G.LEITNER */ return 0 @@ -2222,6 +2238,7 @@ if typx == 'O' then textelement="<font color='green' size =" fsize">"textelement"</font>" newline if typx == 'I' then textelement="<font color='olive' size =" fsize">"textelement"</font>" newline if typx == 'C' then textelement="<font color='black' size =" fsize">"textelement"</font>" newline + if typx == 'X' then textelement="<font color='black' size =" fsize"><B>"textelement"</B></font>" newline DocumentText=DocumentText||textelement end @@ -2551,6 +2568,13 @@ return .false +::class NRun +::method actionPerformed + expose slotDir + use arg , slotDir + call makenewinterpreter + + -- Initialize code execution ::class RunIt ::method actionPerformed @@ -4842,6 +4866,38 @@ ::method unknown use arg methName, methArgs if .mm.dir~isdebug == true then say "CbccEH called: " methName + +/** +* name: CExitHandler +* functionality: When test-code is executed it is called by rexxEngine~apply +* The rexxEngine has this exitHandler associated. +* actually here strings are associated to certain streams +* furthermore entries for the history array are made +*/ +::class CExitHandler +::method handleExit +use arg slot, exitNumber, subFunction, parmBlock + +if .mm.dir~isdebug == true then say "CEXITHANDLER" exitNumber subFunction parmBlock[1] + +-- generate history array +if subFunction == 1 then mark = "S" +if subFunction == 2 then mark = "E" +if subFunction == 3 then mark = "I" +if subFunction == 4 then mark = "I" + +if subFunction == 1 then .output~lineout(parmBlock[1]) +if subFunction == 2 then .error~lineout(parmBlock[1]) +if subFunction == 3 then .input~linein(parmBlock[1]) +if subFunction == 4 then .input~linein(parmBlock[1]) + +if exitNumber == 5 then do + .mm.dir~hcque~setelem(TIME("L"),mark,parmBlock[1]) + return .mm.dir~RXEXIT_HANDLED +end +else do + return .mm.dir~RXEXIT_NOT_HANDLED +end /* GLEITNER Classes end */ @@ -5328,5 +5384,36 @@ userData~maxedpane = NIL exit +/** +* name: makenewinterpreter (routine) +* functionality: make a new rexx interpreter +* set a marker in the history file and increment version number. +* comment: the routine is called +* - at application init (there the exit handlers are linked to the instance) +* - when newinstance in the menu is clicked +* to create a new instance of the interpreter eventually means that the local +* environment is initialized. +*/ + +::routine makenewinterpreter + clzname="org.rexxla.bsf.engines.rexx.RexxExitHandler" + clz=bsf.loadClass(clzname) + .mm.dir~RXEXIT_HANDLED = clz~RXEXIT_HANDLED + .mm.dir~RXEXIT_NOT_HANDLED = clz~RXEXIT_NOT_HANDLED + + .mm.dir~rexxinst = .mm.dir~rexxinst + 1 + + .mm.dir~rexxEngine = .bsf~new("org.apache.bsf.BSFManager")~loadScriptingEngine("rexx") + .mm.dir~rexxconf = .mm.dir~rexxEngine~getRexxConfiguration + .mm.dir~exitHandler = BsfCreateRexxProxy(.CExitHandler~new, ,clzname) + .mm.dir~rexxconf~addExitHandler(clz~RXSIO, .mm.dir~exitHandler) + + + if .mm.dir~isdebug == true then say "NEWINTERPETER: " .mm.dir~rexxinst clz~RXEXIT_HANDLED clz~RXEXIT_NOT_HANDLED + .mm.dir~hcque~setelem(TIME("L"),"X","NEW REXX instance" .mm.dir~rexxinst .endOfLine) /* G.LEITNER */ + + +exit + /* GLEITNER routines end */ Modified: trunk/createDistributionForBSF4ooRexx4.cmd =================================================================== --- trunk/createDistributionForBSF4ooRexx4.cmd 2014-05-18 17:03:24 UTC (rev 204) +++ trunk/createDistributionForBSF4ooRexx4.cmd 2014-05-24 12:27:24 UTC (rev 205) @@ -24,8 +24,8 @@ -set runDate=20140515 -set doc_date=2014-05-15 +set runDate=20140518 +set doc_date=2014-05-18 @rem values to use for creating the BSF jarfile @rem set bsfDate=20090910 Modified: trunk/org/apache/bsf/BSFException.class =================================================================== (Binary files differ) Modified: trunk/org/apache/bsf/BSFException.java =================================================================== --- trunk/org/apache/bsf/BSFException.java 2014-05-18 17:03:24 UTC (rev 204) +++ trunk/org/apache/bsf/BSFException.java 2014-05-24 12:27:24 UTC (rev 205) @@ -1,17 +1,21 @@ /* - * Copyright 2004,2004 The Apache Software Foundation. - * + * Copyright 2004-2014 The Apache Software Foundation. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. + + * changes: 20140521, rgf, add getCause() method as synonym for getTargetException(), + * which makes it orthogonal with Throwable's getCause() that + got introduced since defining BSFException */ package org.apache.bsf; @@ -22,7 +26,7 @@ * may give more details. The reason one exception with multiple meanings * (via the code) [instead of multiple exception types] is used is due to * the interest to keep the run-time size small. - * + * * @author Sanjiva Weerawarana */ public class BSFException extends Exception { @@ -53,6 +57,11 @@ public Throwable getTargetException () { return targetThrowable; } +// 2014-05-21, Rony G. Flatscher: purpose to make Throwable's getCause() also available for BSFExceptions +// to ease resolving nested exceptions + public Throwable getCause() { + return targetThrowable; + } public void printStackTrace () { if (targetThrowable != null) { String msg = getMessage (); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2014-09-30 12:33:31
|
Revision: 244 http://sourceforge.net/p/bsf4oorexx/code/244 Author: orexx Date: 2014-09-30 12:33:26 +0000 (Tue, 30 Sep 2014) Log Message: ----------- 20140930 Save interim work. Modified Paths: -------------- sandbox/rgf/misc/dbusoorexx/dbusoorexx-32.dll trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/bsf4oorexx.dev/bin/BSF.CLS trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt trunk/bsf4oorexx.dev/cmpj.cmd trunk/bsf4oorexx.dev/install/setupBSF.rex trunk/bsf4oorexx.dev/source_java/ArrayWrapper.class trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.class trunk/bsf4oorexx.dev/source_java/RexxAndJava.java trunk/bsf4oorexx.dev/source_java/RexxConfiguration.class trunk/bsf4oorexx.dev/source_java/RexxDispatcher.class trunk/bsf4oorexx.dev/source_java/RexxExtendClass.class trunk/bsf4oorexx.dev/source_java/RexxHandler.class trunk/bsf4oorexx.dev/source_java/RexxProxy.class trunk/bsf4oorexx.dev/source_java/Supplier.class trunk/createDistributionForBSF4ooRexx4.cmd trunk/org/apache/bsf/BSFException.class trunk/org/rexxla/bsf/engines/rexx/MethodForSuperData.class trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool$RunInfos.class trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.class trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.java trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxEngine.class trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.class trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.java trunk/org/rexxla/bsf/engines/rexx/TransformationData.class Modified: sandbox/rgf/misc/dbusoorexx/dbusoorexx-32.dll =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/bin/BSF.CLS =================================================================== --- trunk/bsf4oorexx.dev/bin/BSF.CLS 2014-09-23 14:46:11 UTC (rev 243) +++ trunk/bsf4oorexx.dev/bin/BSF.CLS 2014-09-30 12:33:26 UTC (rev 244) @@ -355,7 +355,7 @@ - version: 4.50 (20140831) + version: 4.50 (20140919) authors: (c) 2001-2014 Rony G. Flatscher, University of Augsburg, University of Essen, WU (pronounced: "vey-uh") Vienna; @@ -444,7 +444,7 @@ call initialize.BSF.dir -- set up .bsf4rexx and its synonym .b4r - .bsf4rexx~version="450.20140831" -- set version (date distribution got created) + .bsf4rexx~version="450.20140919" -- set version (date distribution got created) .bsf4rexx~opSys =opsys -- save operating system name as supplied by Rexx' PARSE SOURCE .bsf4rexx~opSys1 =opsys~left(1)~upper -- save operating system name's initial letter in uppercase .bsf4rexx~opSys2 =opsys~left(2)~upper -- save operating system name's first two letters in uppercase Modified: trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt =================================================================== --- trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2014-09-23 14:46:11 UTC (rev 243) +++ trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2014-09-30 12:33:26 UTC (rev 244) @@ -1,3 +1,10 @@ +-------------------------------------- 2014-09-21 ---------------------------------- + +- samples/info2thml.rxj + + - new sample that demonstrates how to gather version information from ooRexx, + BSF4ooRexx and Java and rendering and saving that information in a HTML file + -------------------------------------- 2014-08-30 ---------------------------------- - org.rexxla.bsf.engines.rexx.RexxExtendClass.java (asm) Modified: trunk/bsf4oorexx.dev/cmpj.cmd =================================================================== --- trunk/bsf4oorexx.dev/cmpj.cmd 2014-09-23 14:46:11 UTC (rev 243) +++ trunk/bsf4oorexx.dev/cmpj.cmd 2014-09-30 12:33:26 UTC (rev 244) @@ -28,6 +28,8 @@ set path2rexxlaBsf=%path2root%\org\rexxla\bsf +rem rgf, 20140927: make sure that the extension jar is not picked up (if bsf4oorexx-jar got installed there) +set javacDefines=-Djava.ext.dirs="" set target=-target 1.4 set source=-source 1.4 @@ -76,29 +78,29 @@ @rem 2010-04-17 -javac %source% %target% %javaSrc%\ArrayWrapper.java && copy %javaSrc%\ArrayWrapper* %path2engine% -javac %source% %target% %javaSrc%\EnumerationWrapper.java && copy %javaSrc%\EnumerationWrapper* %path2engine% -javac %source% %target% %javaSrc%\Java4Rexx.java && copy %javaSrc%\Java4Rexx* %path2engine% -javac %source% %target% %javaSrc%\RexxAndJava.java && copy %javaSrc%\RexxAndJava* %path2engine% -javac %source% %target% %javaSrc%\RexxEngine.java && copy %javaSrc%\RexxEngine* %path2engine% -javac %source% %target% %javaSrc%\RexxException.java && copy %javaSrc%\RexxException* %path2engine% -javac %source% %target% %javaSrc%\RexxProxy.java && copy %javaSrc%\RexxProxy* %path2engine% -javac %source% %target% %javaSrc%\Supplier.java && copy %javaSrc%\Supplier* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\ArrayWrapper.java && copy %javaSrc%\ArrayWrapper* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\EnumerationWrapper.java && copy %javaSrc%\EnumerationWrapper* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\Java4Rexx.java && copy %javaSrc%\Java4Rexx* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\RexxAndJava.java && copy %javaSrc%\RexxAndJava* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\RexxEngine.java && copy %javaSrc%\RexxEngine* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\RexxException.java && copy %javaSrc%\RexxException* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\RexxProxy.java && copy %javaSrc%\RexxProxy* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\Supplier.java && copy %javaSrc%\Supplier* %path2engine% @rem 2009-07-31 -javac %source% %target% %javaSrc%\RexxExtendClass.java && copy %javaSrc%\RexxExtendClass* %path2engine% && copy %javaSrc%\MethodForSuperData.class %path2engine% && copy %javaSrc%\TransformationData.class %path2engine% -javac %source% %target% %javaSrc%\RexxExtendingClassLoader.java && copy %javaSrc%\RexxExtendingClassLoader* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\RexxExtendClass.java && copy %javaSrc%\RexxExtendClass* %path2engine% && copy %javaSrc%\MethodForSuperData.class %path2engine% && copy %javaSrc%\TransformationData.class %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\RexxExtendingClassLoader.java && copy %javaSrc%\RexxExtendingClassLoader* %path2engine% -javac %source% %target% %javaSrc%\RexxDispatcher.java && copy %javaSrc%\RexxDispatcher* %path2rexxlaBsf% +javac %javacDefines% %source% %target% %javaSrc%\RexxDispatcher.java && copy %javaSrc%\RexxDispatcher* %path2rexxlaBsf% @rem 2010-04-17 -javac %source% %target% %javaSrc%\ProxiedJavaClassTool.java && copy %javaSrc%\ProxiedJavaClassTool* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\ProxiedJavaClassTool.java && copy %javaSrc%\ProxiedJavaClassTool* %path2engine% @rem 2010-04-17 -javac %source% %target% %javaSrc%\RexxHandler.java && copy %javaSrc%\RexxHandler* %path2engine% -javac %source% %target% %javaSrc%\RexxExitHandler.java && copy %javaSrc%\RexxExitHandler* %path2engine% -javac %source% %target% %javaSrc%\RexxCommandHandler.java && copy %javaSrc%\RexxCommandHandler* %path2engine% -javac %source% %target% %javaSrc%\RexxConfiguration.java && copy %javaSrc%\RexxConfiguration* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\RexxHandler.java && copy %javaSrc%\RexxHandler* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\RexxExitHandler.java && copy %javaSrc%\RexxExitHandler* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\RexxCommandHandler.java && copy %javaSrc%\RexxCommandHandler* %path2engine% +javac %javacDefines% %source% %target% %javaSrc%\RexxConfiguration.java && copy %javaSrc%\RexxConfiguration* %path2engine% endlocal Modified: trunk/bsf4oorexx.dev/install/setupBSF.rex =================================================================== --- trunk/bsf4oorexx.dev/install/setupBSF.rex 2014-09-23 14:46:11 UTC (rev 243) +++ trunk/bsf4oorexx.dev/install/setupBSF.rex 2014-09-30 12:33:26 UTC (rev 244) @@ -543,6 +543,10 @@ call createEnvironmentScript /* Windows probably needs this script */ +-- TODO: ---rgf: 20140921: define a switch (in .local?) that determines whether to install into extension +-- (java.ext.dirs) +-- call createInstallScript4javaExtension /* also creates the matching uninstall script */ +-- or: call createInstallScript /* new on 2008-05-17, ---rgf Windows: will add environment values to registry, Linux: will add the execution of setEnvironment4BSF4Rexx.sh to ~/bash.rc Modified: trunk/bsf4oorexx.dev/source_java/ArrayWrapper.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/ProxiedJavaClassTool.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxAndJava.java =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2014-09-23 14:46:11 UTC (rev 243) +++ trunk/bsf4oorexx.dev/source_java/RexxAndJava.java 2014-09-30 12:33:26 UTC (rev 244) @@ -5764,6 +5764,7 @@ if (cl==String.class) { +// TODO: ---rgf, 20140927 if we want to return a reference to the Java string object, we need to add code here return (bsfPrefixReturnValue ? STRING_INDICATOR_PREFIX : "")+((String) o); } Modified: trunk/bsf4oorexx.dev/source_java/RexxConfiguration.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxDispatcher.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxExtendClass.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxHandler.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/RexxProxy.class =================================================================== (Binary files differ) Modified: trunk/bsf4oorexx.dev/source_java/Supplier.class =================================================================== (Binary files differ) Modified: trunk/createDistributionForBSF4ooRexx4.cmd =================================================================== --- trunk/createDistributionForBSF4ooRexx4.cmd 2014-09-23 14:46:11 UTC (rev 243) +++ trunk/createDistributionForBSF4ooRexx4.cmd 2014-09-30 12:33:26 UTC (rev 244) @@ -1,3 +1,4 @@ +@echo off @rem 2005-01-17, start, Rony G. Flatscher @rem 2009-10-20, overhauled for BSF4ooRexx @rem 2010-07-24, added 'information' folder to regular installation with an intro to ooRexx, plus docs for rgf_util2.rex @@ -25,9 +26,9 @@ -set releaseDate=20140526 -set runDate=20140518 -set doc_date=2014-05-18 +set releaseDate=20140903 +set runDate=20140903 +set doc_date=2014-09-03 @rem values to use for creating the BSF jarfile @rem set bsfDate=20090910 Modified: trunk/org/apache/bsf/BSFException.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/MethodForSuperData.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool$RunInfos.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.java 2014-09-23 14:46:11 UTC (rev 243) +++ trunk/org/rexxla/bsf/engines/rexx/ProxiedJavaClassTool.java 2014-09-30 12:33:26 UTC (rev 244) @@ -15,6 +15,9 @@ /* 2010-11-30, rgf: - fixed bug in createConstructorsBase() which caused illegal class files to be created 2010-05-31, rgf: - use the ClassLoader of the class to proxy, otherwise dynamically created Java classes cannot be extended + 2014-08-30, rgf: - subclasses are allowed to access protected methods in superclasses, adjust for this + 2014-08-31, rgf: - if methods to proxy is null, then proxy all public and protected declared methods, + if methods is an empty array, then just proxy the constructors */ import java.lang.reflect.*; @@ -35,7 +38,7 @@ * proxied Java method invocations to their original target on the Java side. * * <pre>------------------------ Apache Version 2.0 license ------------------------- - * Copyright (C) 2010-2012 Rony G. Flatscher + * Copyright (C) 2010-2014 Rony G. Flatscher * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,7 +53,7 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 0.6.0, 2010-03-27, 2010-04-14, 2010-04-17, 2010-04-18, 2010-11-30, 2011-05-31 + * @version 0.7.0, 2010-03-27, 2010-04-14, 2010-04-17, 2010-04-18, 2010-11-30, 2011-05-31, 2014-08-30 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu.ac.at">http://www.wu.ac.at</a>) */ @@ -64,7 +67,7 @@ // switches private final static boolean bDebug = false; // true; public static boolean bTiming=false; // true; - public static boolean bss=false; // if set to .true, the generated source is printed to stderr + public static boolean bss= false; // if set to .true, the generated source is printed to stderr // using Janino 1.5.2 and Java 6: bug in Janino which wrongly demands a synthetic bridge method to be implemented public static boolean bDoNotProxySyntheticMethods=true; // this should be the correct mode (once Janino is fixed it should work with Janino as well) @@ -146,11 +149,13 @@ * * @return the class object representing the extended class */ - public static Class createProxiedJavaClass(Class javaClassToProxy, - String newClzName, - String[] methodNames2proxy) + public static Class createProxiedJavaClass(final Class javaClassToProxy, + String newClzName, + final String[] methodNames2proxy) throws BSFException { +if (bDebug==true) System.err.println("... arrived in \"public static Class createProxiedJavaClass(...)\""); + long crtSrcStartTime=0l, crtSrcEndTime=0l; if (bTiming==true) crtSrcStartTime=System.currentTimeMillis(); @@ -195,9 +200,34 @@ newClzName=javaClassToProxy.getName()+"_$RexxExtendClass$_"+(new Object()).hashCode(); } - // if no method names to proxy given, then indicate by using an empty String array instead - String [] methods2proxy= (methodNames2proxy==null ? new String[]{} : methodNames2proxy); + String [] methods2proxy=null; + + // rgf, 20140831: if no methods given, proxy all public and protected declared methods + if (methodNames2proxy==null) + { + Method meths[]=javaClassToProxy.getDeclaredMethods(); + HashSet methNames= new HashSet(); + for (int i=0; i<meths.length; i++) + { + int mods=meths[i].getModifiers(); + if (Modifier.isPublic(mods) || Modifier.isProtected(mods)) + { +// do not allow proxying methods toString(), equals(), hashCode() by default as this may break the JVM + String methName=meths[i].getName(); + if (!methName.equals("toString") && !methName.equals("equals") && !methName.equals("hashCode") ) + { + methNames.add(meths[i].getName()); + } + } + } + methods2proxy= (String[]) methNames.toArray(new String[0]); + } + else // use supplied array of method names to proxy + { + methods2proxy=methodNames2proxy; + } + boolean isAbstractClz=Modifier.isAbstract(classModifiers); // create Java program, use a StringBuffer @@ -438,7 +468,9 @@ { Constructor tmpConstr=javaClassToProxy.getDeclaredConstructor( new Class[] {} ); // if constructor is private, cannot reach it, behave as if not existent - bDefaultConstructorExistsInSuper = Modifier.isPublic(tmpConstr.getModifiers()); + // bDefaultConstructorExistsInSuper = Modifier.isPublic(tmpConstr.getModifiers()); + int mods=tmpConstr.getModifiers(); + bDefaultConstructorExistsInSuper = Modifier.isPublic(mods) || Modifier.isProtected(mods) ; if (bDefaultConstructorExistsInSuper==false) // not reachable { @@ -639,7 +671,9 @@ if (bDebug==true) System.err.println("---> createConstructors(): tmpConstr=["+tmpConstr.toString()+"]"); - if (!Modifier.isPublic(tmpConstr.getModifiers())) // only create public constructors + // if (!Modifier.isPublic(tmpConstr.getModifiers())) // only create public constructors + int mods=tmpConstr.getModifiers(); + if (!( Modifier.isPublic(mods) || Modifier.isProtected(mods)) ) // only create public constructors { continue; } @@ -841,7 +875,9 @@ } int mMods=meths[k].getModifiers(); - if ((mMods & (Modifier.FINAL | Modifier.PRIVATE | Modifier.PROTECTED)) != 0) + // rgf, 20140830: allow to override protected methods too as a subclass is allowed to invoke it + // if ((mMods & (Modifier.FINAL | Modifier.PRIVATE | Modifier.PROTECTED)) != 0) + if ((mMods & (Modifier.FINAL | Modifier.PRIVATE )) != 0) { continue; // don't proxy } @@ -852,7 +888,7 @@ if (bMethodFound==false) // no method by the given name found ! { - throw new BSFException("ProxiedJavaClassTool.createMethods(): no public method definition found for the "+ + throw new BSFException("ProxiedJavaClassTool.createMethods(): no public nor protected method definition to override found for the "+ (i+1)+(i==0 ? "st" : (i==1 ? "nd" : (i==2 ? "rd" : "th") ) )+ " (1-based) entry in the supplied String array of methods to proxy: ["+methods2proxy[i]+"]."); } Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxEngine.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java 2014-09-23 14:46:11 UTC (rev 243) +++ trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java 2014-09-30 12:33:26 UTC (rev 244) @@ -29,7 +29,7 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 4.5.0, 20140330 + * @version 4.5.0, 20140703 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) * */ @@ -37,6 +37,9 @@ /* last change: $Revision: 546 $ $Author: rony $ $Date: 2009-10-20 20:45:19 +0200 (Tue, 20 Oct 2009) $ + 2014-07-03, ---rgf, - make sure that RexxProxy objects are always passed as Java objects in arguments; + adapt apply() as well to pass through RexxProxy objects in arguments + 2014-03-30, ---rgf, - add undocumented pass-thru method procEnvironment(...) to allow a last resort means (allow Java to set/get process environment variables via JNI using RexxAndJava) @@ -128,7 +131,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "450.20140330"; + static final public String version = "450.20140703"; /** If terminate() was invoked, then this instance must not be used anymore. */ @@ -400,7 +403,8 @@ Object argVal=args[i]; if (argVal!=null) { - if (bIs40Callback && argVal instanceof RexxProxy) // leave RexxProxy arguments unchanged + // if (bIs40Callback && argVal instanceof RexxProxy) // leave RexxProxy arguments unchanged + if (argVal instanceof RexxProxy) // leave RexxProxy arguments unchanged { editedArgs[i]=argVal; } @@ -886,10 +890,11 @@ } lastScriptCode=script; // save script's code, fall 2002, ---rgf - lastSourceLocation=source; // save script source info, 2008-06-14 + lastSourceLocation=source; // save script source info, 2008-06-14 - Vector beanVector = null; // bean Vector to build (for each argument one entry) - String stringArg[] = null; // args for Rexx + Vector beanVector = null; // bean Vector to build (for each argument one entry) + + Object objArg[] = null; // args for Rexx // 2003-01-06, ---rgf, deal with arguments (non-primitive Java objects) which need to be turned into Beans Object [] res; // to contain the results of args2RexxString() @@ -904,24 +909,31 @@ Enumeration e=vArgs.elements(); // this works under JRE 1.1.8, i.e. under older versions of OS/2 Warp as well, 2001-05-23, ---rgf - stringArg = new String [vArgs.size()]; + objArg = new Object [vArgs.size()]; beanVector= new Vector(vArgs.size()); for ( i=0; e.hasMoreElements() ; i++) { - Object ne=e.nextElement(); - if (ne!=null) + Object argVal=e.nextElement(); + if (argVal!=null) { - res = args2RexxString( ne ); // get String or Bean for this argument - if (((Boolean) res[0]).booleanValue()) // a Bean had to be created + if (argVal instanceof RexxProxy) // leave RexxProxy arguments unchanged { - beanVector.addElement(res[1]); // remember beanName for later deregistering + objArg[i]=argVal; } - stringArg[i]=(String) res[1]; // String value for Rexx + else + { + res = args2RexxString( argVal ); // get String or Bean for this argument + if (((Boolean) res[0]).booleanValue()) // a Bean had to be created + { + beanVector.addElement(res[1]); // remember beanName for later deregistering + } + objArg[i]=(String) res[1]; // assign beanName (a String) + } } else { - stringArg[i]=null; + objArg[i]=null; } } } @@ -937,7 +949,7 @@ 2, // invocationType, // determines whether "CallProgram", "LoadPackage" or "LoadPackageFromData" is to be used lastSourceLocation, // String fileName, // filename which contains the program to run lastScriptCode, // String programData, // Rexx code to execute; if given "fileName" denotes a (symbolic) name for this code - stringArg // Object[]args // arguments + objArg // Object[]args // arguments ); if (bDebug) System.err.println("<=== RexxEngine.apply() - AFTER: rexxInterface.jniRexxRunProgram (...)"); @@ -1013,7 +1025,6 @@ return res; } - // TODO: allow RexxProxy objects to go through ? // not of a primitive type nor String, hence a bean will be created for it @@ -1042,8 +1053,6 @@ catch (Exception e) {} } - - return res; } Modified: trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.java 2014-09-23 14:46:11 UTC (rev 243) +++ trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.java 2014-09-30 12:33:26 UTC (rev 244) @@ -109,7 +109,7 @@ * to explicitly invoke masked methods in the super (extended) class. * * <pre>------------------------ Apache Version 2.0 license ------------------------- - * Copyright (C) 2009, 2013 Rony G. Flatscher + * Copyright (C) 2009, 2014 Rony G. Flatscher * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -125,11 +125,14 @@ * ----------------------------------------------------------------------------- </pre> * * @author Rony G. Flatscher (<a href="http://www.wu.ac.at">WU Vienna </a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) - * @version 1.1 + * @version 1.2 * @since 2009-07-29 */ /* + 2014-08-30, rgf: - subclasses are allowed to access protected methods in superclasses, + adjust for this + 2013-01-03, rgf: - fixed a bug when extending an abstract class that possesses unimplemented interface methods like javax.swing.AbstractAction; the fix now correctly implements any declared abstract methods from interfaces (including any @@ -597,7 +600,9 @@ return null; } - if ((access & ACC_PUBLIC)==0) // don't process non-public methods + // rgf, 20140830: allow overriding protected methods which are accessible from subclasses + // if ((access & ACC_PUBLIC)==0) // don't process non-public methods + if ((access & (ACC_PUBLIC | ACC_PROTECTED ))==0) // don't process non-public/non-protected methods { if (bDebugMethodVisitor) System.err.println("\tNOT PROCESSING! (not public)"); @@ -620,6 +625,19 @@ // make sure ACC_SYNCHRONIZED and ACC_STRICT ("strictfp") get removed tranData.newMethodAccess= (access & ~(ACC_SYNCHRONIZED|ACC_STRICT)); + // rgf, 20140830: allow overriding protected methods which are accessible from subclasses + // turn protected to public flag in extended class + if ((access & ACC_PROTECTED)!=0) + { + // tranData.newMethodAccess~=ACC_PROTECTED; // remove protected flag + // tranData.newMethodAccess|=ACC_PUBLIC; // add public flag + + // remove protected flag, add public flag + tranData.newMethodAccess= (tranData.newMethodAccess & ~ACC_PROTECTED) | ACC_PUBLIC; + + } + + tranData.isMethodStatic =((access & ACC_STATIC)!=0); tranData.isMethodConstructor=name.equals("<init>"); tranData.bCallbackFromConstructor=false; // reset flag to initial state, i.e. do not forward to RexxProxy Modified: trunk/org/rexxla/bsf/engines/rexx/TransformationData.class =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2014-10-07 18:35:17
|
Revision: 250 http://sourceforge.net/p/bsf4oorexx/code/250 Author: orexx Date: 2014-10-07 18:35:10 +0000 (Tue, 07 Oct 2014) Log Message: ----------- 20140 Added routines utf8stringAsJSO() and JSOasUtf8string() to BSF.CLS, updated ooRexxTry.rxj. Modified Paths: -------------- trunk/bsf4oorexx.dev/bin/BSF.CLS trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt trunk/bsf4oorexx.dev/utilities/ooRexxTry.rxj trunk/samples/demoJSO.rxj Modified: trunk/bsf4oorexx.dev/bin/BSF.CLS =================================================================== --- trunk/bsf4oorexx.dev/bin/BSF.CLS 2014-10-06 20:58:29 UTC (rev 249) +++ trunk/bsf4oorexx.dev/bin/BSF.CLS 2014-10-07 18:35:10 UTC (rev 250) @@ -12,6 +12,9 @@ needs: ooRexx 4.0.1 (cf. <http://www.ooRexx.org>) and BSF4ooRexx 4.0 or greater date: + 2014-10-07, rgf: - JSOasUtf8string: render Java String as UTF-8 encoded Rexx string + - utf8stringAsJSO: render UTF-8 Rexx encoded string as a Java String + 2014-10-06, rgf: - utf8toString - handle Javs objects 2014-10-05, rgf: - now that BSF4ooRexx mandates ooRexx 4 and above, we can reinstate the original directory accessible via the environment variable .bsf4rexx and .b4r, adding an additional alias named .bsf4oorexx; @@ -385,7 +388,7 @@ - version: 4.50 (20141006) + version: 4.50 (20141007) authors: (c) 2001-2014 Rony G. Flatscher, University of Augsburg, University of Essen, WU (pronounced: "vey-uh") Vienna; @@ -474,7 +477,7 @@ call initialize.BSF.dir -- set up .bsf4rexx and its synonym .b4r - .bsf4rexx~version="450.20141006" -- set version (date distribution got created) + .bsf4rexx~version="450.20141007" -- set version (date distribution got created) .bsf4rexx~opSys =opsys -- save operating system name as supplied by Rexx' PARSE SOURCE .bsf4rexx~opSys1 =opsys~left(1)~upper -- save operating system name's initial letter in uppercase .bsf4rexx~opSys2 =opsys~left(2)~upper -- save operating system name's first two letters in uppercase @@ -3984,17 +3987,75 @@ DBUS4ooRexx package which mandates UTF-8 strings (and checks them) */ /* ---------------------------------------------------------------------------------------- */ /* as of 2011-07-05 ooRexx from trunk does not support UTF-8, hence depending on BSF4ooRexx */ +/** The received Rexx string is rendered to a Java String object using the 'file.encoding' codepage +* and then translated to an UTF-8 encoded Rexx string. +* +* @param str the Rexx string encoded according to the 'file.encoding's codepage +* @return the equivalent UTF-8-encoded Rexx string +* @since 2012-02-11 +*/ ::routine stringToUtf8 public -- needs BSF4ooRexx parse arg str return BsfRawBytes(.java.lang.String~new(str)~getBytes("UTF-8")) /* ---------------------------------------------------------------------------------------- */ +/** The received Java object's string value is rendered to a Rexx string according to 'file.encoding's +* codepage. +* +* @param obj the Java String object (JSO) or a Java object which string value is retrieved and worked upon, +* or an UTF-8 encoded Rexx string +* @return a Rexx string encoded according to 'file.encoding's codepage +* @since 2012-02-11 +*/ ::routine utf8ToString public -- needs BSF4ooRexx - parse arg str - return BsfRawBytes(.java.lang.String~new(bsfRawBytes(str),"UTF-8")~getBytes) + use arg str + if str~isA(.bsf) then -- any Java object, use its String value + return str~toString -- this will do the translation from UTF-8 to file.encoding codepage + else -- a Rexx string? -- turn UTF-8 encoded Rexx string into Java string, recode the Java string using 'file.encoding's codepage and return it as a Rexx string + return BsfRawBytes(.java.lang.String~new(bsfRawBytes(str),"UTF-8")~getBytes) + + /* ---------------------------------------------------------------------------------------- */ +/** The received Rexx string consists of UTF-8 characters for which a Java string object gets +* created and returned, independent of the file.encoding codepage setting. +* +* @param str the Rexx string consisting of UTF-8 characters +* @return a reference to the Java String object constructed from the Rexx string +* @since 2014-10-07 +*/ +::routine utf8stringAsJSO public + parse arg str + return .java.lang.String~new(BSFRawBytes(str),"UTF-8") + + + /* ---------------------------------------------------------------------------------------- */ +/** The received Java String object (JSO) is rendered as an UTF-8 Rexx string, independent +* of the file.encoding codepage setting. +* @param obj the Java String object reference or a Java object which String value is retrieved and worked upon +* @return a Rexx UTF-8 encoded string constructed from the Java String object +* @since 2014-10-07 +*/ +::routine JSOasUtf8string public + use arg obj + + if obj~isA(.bsf) then -- a Rexx proxy (to a Java object) in hand? + do + if obj~bsf.isA(.java.lang.String)=.false then -- need to get String value from object? + obj=obj~bsf.invokeJSO('toString') -- fetch String value as a Java String object (JSO) + + return BSFRawBytes(obj~getBytes("UTF-8")) -- render String value to a Rexx string and return it + end + + raise syntax 40.900 array ("Wrong argument, must be a Java String object (JSO) or a Java object which String value (result of sending it the 'toString' message) will be processed upon. Instead, received an ooRexx object.") + +syntax: + raise propagate + + + + /* ---------------------------------------------------------------------------------------- */ -- as of ooRexx 4.1.1 the following scenario may occur: Rexx starts Java and Java calls -- back into ooRexx; this may take place even after the Rexx program ended and as a result the -- Rexx interpreter shuts down; a callback in that situation will cause a crash! Modified: trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt =================================================================== --- trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2014-10-06 20:58:29 UTC (rev 249) +++ trunk/bsf4oorexx.dev/changesBSF4ooRexx.txt 2014-10-07 18:35:10 UTC (rev 250) @@ -1,3 +1,17 @@ +-------------------------------------- 2014-10-07 ---------------------------------- + +- BSF.CLS + - JSOasUtf8string: render Java String as UTF-8 encoded Rexx string + - utf8stringAsJSO: render UTF-8 Rexx encoded string as Java String + +- utilities\ooRexxTry.rxj + - bug fixed version by Geri Leitner + +-------------------------------------- 2014-10-06 ---------------------------------- + +- BSF.CLS + - utf8toString - render UTF-8 handle Java objects + -------------------------------------- 2014-10-05 ---------------------------------- - BSF.CLS Modified: trunk/bsf4oorexx.dev/utilities/ooRexxTry.rxj =================================================================== --- trunk/bsf4oorexx.dev/utilities/ooRexxTry.rxj 2014-10-06 20:58:29 UTC (rev 249) +++ trunk/bsf4oorexx.dev/utilities/ooRexxTry.rxj 2014-10-07 18:35:10 UTC (rev 250) @@ -2961,6 +2961,7 @@ props~setProperty("s2",.mm.dir~splitpane2) props~setProperty("s3",.mm.dir~splitpane3) props~setProperty("s4",.mm.dir~splitpane4) + props~setProperty("bpanel94",.mm.dir~bpanel94) -- .mm.dir~wh1..wh6 -- .mm.dir~ww1..ww6 @@ -5719,6 +5720,12 @@ .mm.dir~splitpane4 = props~getProperty("s4") .mm.dir~dtype = props~getProperty("dtype") + if props~getProperty("bpanel94") == .nil then do + if .mm.dir~isdebug == true then say "bpanel94 not found" + end + else do + .mm.dir~bpanel94 = props~getProperty("bpanel94") + end if props~getProperty("s0") == .nil then .mm.dir~splitpane0 = trunc( 400 * (.local~mm.dir~height / 1024) ) else if props~getProperty("s0") < 1 then .mm.dir~splitpane0 = trunc( 400 * (.local~mm.dir~height / 1024) ) Modified: trunk/samples/demoJSO.rxj =================================================================== --- trunk/samples/demoJSO.rxj 2014-10-06 20:58:29 UTC (rev 249) +++ trunk/samples/demoJSO.rxj 2014-10-07 18:35:10 UTC (rev 250) @@ -189,7 +189,7 @@ jFrame~pack -- resize JLabel str2b=jLabel~text -- this will cause decoding in the "file.encoding" codepage say "str2b: " pp(str2b) "("currCP")" - +say say "Hit enter to continue..." pull x say @@ -221,12 +221,37 @@ -- get UTF-8 Java characters as Java byte array, turn into a Rexx string without recoding str3c=BSFRawBytes(jLabel~bsf.invokeJSO("getText")~getBytes("UTF-8")) say "str3c: " pp(str3c) "(UTF-8)" +say +say "Hit enter to continue..." +pull x + + -- the code in this section explicitly en-/decodes the string encoded as "UTF-8" (does not + -- rely on the setting of the property "file.encoding") +say "-"~copies(79) +say +txt="explicitly using UTF-8, *NOT* relying on 'file.encoding=UTF-8'" +jLabel~text=" --> next round," txt "<-- " +jFrame~pack -- resize JLabel +say "Again" txt "by employing" +say "the public routines from BSF.CLS: utf8stringAsJSO(str) and JSOasUtf8string(jso)" +say say "Hit enter to continue..." pull x +jLabel~text=utf8stringAsJSO(str3b) -- turn UTF-8 Rexx string into a Java String object (JSO) +jFrame~pack -- resize JLabel +res=JSOasUtf8string(jLabel~bsf.invokeJSO("getText")) -- get UTF-8 encoded Rexx string +say "str3b=res?" pp(str3b=res) -- show whether both UTF-8 encoded Rexx strings are the same +say "str3b:" pp(str3b) +say +say "res :" pp(res) +say "Hit enter to continue..." +pull x + + ::requires bsf.cls This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2014-10-14 15:54:58
|
Revision: 254 http://sourceforge.net/p/bsf4oorexx/code/254 Author: orexx Date: 2014-10-14 15:54:52 +0000 (Tue, 14 Oct 2014) Log Message: ----------- 20141014 Update repository before creating GA version. Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/samples/demoJSO.rxj Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/samples/demoJSO.rxj =================================================================== --- trunk/samples/demoJSO.rxj 2014-10-14 15:25:30 UTC (rev 253) +++ trunk/samples/demoJSO.rxj 2014-10-14 15:54:52 UTC (rev 254) @@ -1,3 +1,4 @@ +#!/usr/bin/rexx /* name: demoJSO.rxj purpose: - demonstrate how to retrieve a reference to the Java string object ("JSO") that method This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2014-10-14 16:08:44
|
Revision: 255 http://sourceforge.net/p/bsf4oorexx/code/255 Author: orexx Date: 2014-10-14 16:08:36 +0000 (Tue, 14 Oct 2014) Log Message: ----------- 20141014 Update repository before creating GA version. Modified Paths: -------------- trunk/ScriptProviderForooRexx-source.jar trunk/ScriptProviderForooRexx.jar trunk/ScriptProviderForooRexx.oxt trunk/samples/demoJSO.rxj Modified: trunk/ScriptProviderForooRexx-source.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.jar =================================================================== (Binary files differ) Modified: trunk/ScriptProviderForooRexx.oxt =================================================================== (Binary files differ) Modified: trunk/samples/demoJSO.rxj =================================================================== --- trunk/samples/demoJSO.rxj 2014-10-14 15:54:52 UTC (rev 254) +++ trunk/samples/demoJSO.rxj 2014-10-14 16:08:36 UTC (rev 255) @@ -1,255 +1,255 @@ -#!/usr/bin/rexx -/* - name: demoJSO.rxj - purpose: - demonstrate how to retrieve a reference to the Java string object ("JSO") that method - invocations and read access to fields and properties might return, rather than - having the default and transparent translation to a Rexx string - - demonstrate how to handle different encodings of strings between Rexx and Java taking - advantage of the JSO-functionality - - demonstrate platform independent beeping ;) - author: Rony G. Flatscher - date: 2014-10-06 - nneds: environment variable "BSF4Rexx_JavaStartupOptions" set to "Dfile.encoding=UTF-8", - either globally or in the (command line window) in which this programs gets executed, - e.g.: - Windows: - - set BSF4Rexx_JavaStartupOptions=-Dfile.encoding=UTF-8 - rexx demoJSO.rxj - - Unix: - - export BSF4Rexx_JavaStartupOptions=-Dfile.encoding=UTF-8 - rexx demoJSO.rxj - - last change: $Revision: 491 $ $Author: rony $ $Date: 2009-10-17 19:50:02 +0200 (Sat, 17 Oct 2009) $ - changes: --- - - license: - - ------------------------ Apache Version 2.0 license ------------------------- - Copyright (C) 2014 Rony G. Flatscher - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ----------------------------------------------------------------------------- -*/ - -d=.bsf~new("java.awt.Dimension", 12, 34) -- create a Dimension object - -say "d~tostring :" d~tostring -say -say "alternatively:" -say -say "d~bsf.invoke(...) :" d~bsf.invoke("toString") -- returns a Rexx string -say "d~bsf.invokeJSO(...) :" d~bsf.invokeJSO("toString") -- returns a reference to the JSO -say -say "d~bsf.invokeStrict(...) :" d~bsf.invokeStrict("toString") -- returns a Rexx string -say "d~bsf.invokeStrictJSO(...):" d~bsf.invokeStrictJSO("toString") -- returns a reference to the JSO -say -say "-"~copies(50) - -say -clzName="java.awt.BorderLayout" -clz=bsf.importClass(clzName) -fieldName="NORTH" - -say "Working with class" pp(clzName)", retrieving the static String field" pp(fieldName)":" -say -say "clz~north :" clz~north -say -say "alternatively:" -say -say "clz~bsf.getFieldValue(..) :" clz~bsf.getFieldValue(fieldName) -say "clz~bsf.getFieldValueJSO(..) :" clz~bsf.getFieldValueJSO(fieldName) -say -say "clz~bsf.getFieldValueStrict(..) :" clz~bsf.getFieldValueStrict(fieldName) -say "clz~bsf.getFieldValueStrictJSO(..):" clz~bsf.getFieldValueStrictJSO(fieldName) -say - -say "-- routines:" -say -say "bsf.getStaticValue(..) :" bsf.getStaticValue(clzName,fieldName) -say "bsf.getStaticValueJSO(..) :" bsf.getStaticValueJSO(clzName,fieldName) -say -say "bsf.getStaticValueStrict(..) :" bsf.getStaticValueStrict(clzName,fieldName) -say "bsf.getStaticValueStrictJSO(..) :" bsf.getStaticValueStrictJSO(clzName,fieldName) -say -say "bsf.getConstant(..) :" bsf.getConstant(clzName,fieldName) -say "bsf.getConstantJSO(..) :" bsf.getConstantJSO(clzName,fieldName) -say - ------------------------------------------------------------------------------- -say "="~copies(79) -say - -say "exchanging strings with Java using different encodings" -currCP=.java.lang.System~getProperty("file.encoding") -say "file.encoding:" pp(currCP) -- show current file.encoding setting -say - -jframe=.BSF~new("javax.swing.JFrame", "Playing with code pages...") -jlabel=.bsf~new('javax.swing.JLabel', ' Testing string exchanges with Rexx ') -font=jlabel~getFont -- get font used for label -size=font~getSize -- get font size -newFont=font~deriveFont(box("float",size*1.5)) -- create new font, increasing size by 50% -jlabel~setFont(newFont) -- set the labe to the new font -jframe~~add(jlabel)~~pack -jframe~~setLocation(100, 100)~~setVisible(.true) - -say "Hit enter to continue..." -pull x - ------------------------------------------------------------------------------- - -- the code in this section explicitly en-/decodes the string encoded as "Cp1252" (does not - -- rely on the setting of the property "file.encoding") -say "-"~copies(79) -cp="Cp1252" -- code page the following string was created with -str1a=" [\xC4\xE4\xD6\xF6\xDC\xFC\xDF] - \xDCber, \xFCber den W\xF6lkchen, mu\xDF die Fr\xF6h\xE4it in \xD6sterland im \xC4rger wohl grenzenlo\xDF sein... ;) - [\xC4\xE4\xD6\xF6\xDC\xFC\xDF] " -say "Using codepage" pp(cp) "to exchange strings, taking advantage of BSFRawBytes() and java.lang.String constructors" -say "(the literal string 'str1a' was created in 'Cp1252')" -say -say "str1a:" pp(str1a) "(encoding" pp(cp)")" -say - - -- turn Rexx string into a Java string using encoding "Cp1252" -bArr=BSFRawBytes(str1a) -- turn Rexx string into Java byte array without any re/encoding -str1b=.java.lang.String~new(bArr,cp) -- create Java string object from Java byte array supplying codepage to use -say "str1b:" pp(str1b) -- a Java strinb object -say -jlabel~text=str1b -- assign Java string object to JLabel -jframe~pack -- resize (string in JLabel is now longer) - -str1c=jlabel~getText -- gets text translates to Rexx string using UTF-8 encoding - - -say "str1c:" pp(str1c) "(encoding" pp(currCP)")" -say -say "str1c~c2x:" pp(str1c~c2x) -say - -- turn Java string into a Rexx string using encoding "Cp1252" -str1d=jlabel~bsf.invokeJSO("getText") -- get Java string object -say "str1d:" pp(str1d) -- the reference to the Java string object -say -bArr=str1d~getBytes(cp) -- get the bytes from the Java string in "Cp1252" encoding -str1e=BSFRawBytes(bArr) -- t\xFCrn Java byte array into a Rexx string without any re/encoding -say "str1e:" pp(str1e) "(forced decoding with" pp(cp)", should be the same as 'str1a' above)" -say -say "Hit enter to continue..." -pull x - ------------------------------------------------------------------------------- - -- the code in this section depends on the setting "file.encoding" - -- should be: "file.encoding=UTF-8" (see prolog comment above how to achieve that) -say "-"~copies(79) -say -say "This section en-/decodes the string according to 'file.encoding' (should be set to 'UTF-8')" -if currCP<>"UTF-8" then -do - say "WARNING!" - say "WARNING: 'file.encoding="currCP"', *NOT* set to 'UTF-8'!" - say " (The encoding to Java will NOT be right, the JLabel text will look akward!)" - say "WARNING!" - bsf.loadClass("java.awt.Toolkit")~getDefaultToolkit~beep -- beep using Java -end -say - - -- some UTF-8 characters -female ="e2 99 80"x -male ="e2 99 82"x -ballot ="e2 98 90"x -ballot_x ="e2 98 92"x -ballot_check ="e2 98 91"x -radioactive ="e2 98 a2"x -skullAndBones="e2 98 a0"x -umbrellaRain ="e2 98 94"x - -smiley ="e2 98 ba"x -frowney ="e2 98 b9"x -smileyBlack ="e2 98 bb"x - -peace ="e2 98 ae"x -yingYang ="e2 98 af"x - -utf8chars=female male ballot ballot_x ballot_check radioactive skullAndBones umbrellaRain - - smiley frowney smileyBlack peace yingYang - -str2a=utf8chars str1c utf8chars -say "str2a:" pp(str2a) "("currCP", pre-/ap-pended UTF-8 (symbolic) characters)" -say -jLabel~text=str2a -- this will cause encoding in the "file.encoding" codepage -jFrame~pack -- resize JLabel -str2b=jLabel~text -- this will cause decoding in the "file.encoding" codepage -say "str2b: " pp(str2b) "("currCP")" -say -say "Hit enter to continue..." -pull x -say - ------------------------------------------------------------------------------- - -- the code in this section explicitly en-/decodes the string encoded as "UTF-8" (does not - -- rely on the setting of the property "file.encoding") -say "-"~copies(79) -say -txt="explicitly using UTF-8, *NOT* relying on 'file.encoding=UTF-8'" -jLabel~text=" --> next round," txt "<-- " -jFrame~pack -- resize JLabel -say "Now" txt -say "Hit enter to continue..." -pull x - -str3a=x2c("20 5B C3 84 C3 A4 C3 96 C3 B6 C3 9C C3 BC C3 9F 5D 20 2D 20 C3 9C 62 65 72 2C 20 C3" - - "BC 62 65 72 20 64 65 6E 20 57 C3 B6 6C 6B 63 68 65 6E 2C 20 6D 75 C3 9F 20 64 69 65" - - "20 46 72 C3 B6 68 C3 A4 69 74 20 69 6E 20 C3 96 73 74 65 72 6C 61 6E 64 20 69 6D 20" - - "C3 84 72 67 65 72 20 77 6F 68 6C 20 67 72 65 6E 7A 65 6E 6C 6F C3 9F 20 73 65 69 6E" - - "2E 2E 2E 20 3B 29 20 2D 20 5B C3 84 C3 A4 C3 96 C3 B6 C3 9C C3 BC C3 9F 5D 20") -say "str3a:" pp(str3a) "(explicitly encoded in UTF-8)" -str3b=utf8chars str3a utf8chars -say "str3b:" pp(str3b) "(explicitly encoded in UTF-8)" -say - -- turn UTF-8-Rexx string into a Java byte array and turn that one into a Java String (indicating byte array is UTF-8) -jLabel~text=.java.lang.String~new(BSFRawBytes(str3b),"UTF-8") -jFrame~pack -- resize JLabel - -- get UTF-8 Java characters as Java byte array, turn into a Rexx string without recoding -str3c=BSFRawBytes(jLabel~bsf.invokeJSO("getText")~getBytes("UTF-8")) -say "str3c: " pp(str3c) "(UTF-8)" -say -say "Hit enter to continue..." -pull x - - - -- the code in this section explicitly en-/decodes the string encoded as "UTF-8" (does not - -- rely on the setting of the property "file.encoding") -say "-"~copies(79) -say -txt="explicitly using UTF-8, *NOT* relying on 'file.encoding=UTF-8'" -jLabel~text=" --> next round," txt "<-- " -jFrame~pack -- resize JLabel -say "Again" txt "by employing" -say "the public routines from BSF.CLS: utf8stringAsJSO(str) and JSOasUtf8string(jso)" -say -say "Hit enter to continue..." -pull x - -jLabel~text=utf8stringAsJSO(str3b) -- turn UTF-8 Rexx string into a Java String object (JSO) -jFrame~pack -- resize JLabel -res=JSOasUtf8string(jLabel~bsf.invokeJSO("getText")) -- get UTF-8 encoded Rexx string -say "str3b=res?" pp(str3b=res) -- show whether both UTF-8 encoded Rexx strings are the same -say "str3b:" pp(str3b) -say -say "res :" pp(res) - -say "Hit enter to continue..." -pull x - - -::requires bsf.cls -- get Java camouflaging support +#!/usr/bin/rexx +/* + name: demoJSO.rxj + purpose: - demonstrate how to retrieve a reference to the Java string object ("JSO") that method + invocations and read access to fields and properties might return, rather than + having the default and transparent translation to a Rexx string + - demonstrate how to handle different encodings of strings between Rexx and Java taking + advantage of the JSO-functionality + - demonstrate platform independent beeping ;) + author: Rony G. Flatscher + date: 2014-10-06 + nneds: environment variable "BSF4Rexx_JavaStartupOptions" set to "Dfile.encoding=UTF-8", + either globally or in the (command line window) in which this programs gets executed, + e.g.: + Windows: + + set BSF4Rexx_JavaStartupOptions=-Dfile.encoding=UTF-8 + rexx demoJSO.rxj + + Unix: + + export BSF4Rexx_JavaStartupOptions=-Dfile.encoding=UTF-8 + rexx demoJSO.rxj + + last change: $Revision: 491 $ $Author: rony $ $Date: 2009-10-17 19:50:02 +0200 (Sat, 17 Oct 2009) $ + changes: --- + + license: + + ------------------------ Apache Version 2.0 license ------------------------- + Copyright (C) 2014 Rony G. Flatscher + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ----------------------------------------------------------------------------- +*/ + +d=.bsf~new("java.awt.Dimension", 12, 34) -- create a Dimension object + +say "d~tostring :" d~tostring +say +say "alternatively:" +say +say "d~bsf.invoke(...) :" d~bsf.invoke("toString") -- returns a Rexx string +say "d~bsf.invokeJSO(...) :" d~bsf.invokeJSO("toString") -- returns a reference to the JSO +say +say "d~bsf.invokeStrict(...) :" d~bsf.invokeStrict("toString") -- returns a Rexx string +say "d~bsf.invokeStrictJSO(...):" d~bsf.invokeStrictJSO("toString") -- returns a reference to the JSO +say +say "-"~copies(50) + +say +clzName="java.awt.BorderLayout" +clz=bsf.importClass(clzName) +fieldName="NORTH" + +say "Working with class" pp(clzName)", retrieving the static String field" pp(fieldName)":" +say +say "clz~north :" clz~north +say +say "alternatively:" +say +say "clz~bsf.getFieldValue(..) :" clz~bsf.getFieldValue(fieldName) +say "clz~bsf.getFieldValueJSO(..) :" clz~bsf.getFieldValueJSO(fieldName) +say +say "clz~bsf.getFieldValueStrict(..) :" clz~bsf.getFieldValueStrict(fieldName) +say "clz~bsf.getFieldValueStrictJSO(..):" clz~bsf.getFieldValueStrictJSO(fieldName) +say + +say "-- routines:" +say +say "bsf.getStaticValue(..) :" bsf.getStaticValue(clzName,fieldName) +say "bsf.getStaticValueJSO(..) :" bsf.getStaticValueJSO(clzName,fieldName) +say +say "bsf.getStaticValueStrict(..) :" bsf.getStaticValueStrict(clzName,fieldName) +say "bsf.getStaticValueStrictJSO(..) :" bsf.getStaticValueStrictJSO(clzName,fieldName) +say +say "bsf.getConstant(..) :" bsf.getConstant(clzName,fieldName) +say "bsf.getConstantJSO(..) :" bsf.getConstantJSO(clzName,fieldName) +say + +------------------------------------------------------------------------------ +say "="~copies(79) +say + +say "exchanging strings with Java using different encodings" +currCP=.java.lang.System~getProperty("file.encoding") +say "file.encoding:" pp(currCP) -- show current file.encoding setting +say + +jframe=.BSF~new("javax.swing.JFrame", "Playing with code pages...") +jlabel=.bsf~new('javax.swing.JLabel', ' Testing string exchanges with Rexx ') +font=jlabel~getFont -- get font used for label +size=font~getSize -- get font size +newFont=font~deriveFont(box("float",size*1.5)) -- create new font, increasing size by 50% +jlabel~setFont(newFont) -- set the labe to the new font +jframe~~add(jlabel)~~pack +jframe~~setLocation(100, 100)~~setVisible(.true) + +say "Hit enter to continue..." +pull x + +------------------------------------------------------------------------------ + -- the code in this section explicitly en-/decodes the string encoded as "Cp1252" (does not + -- rely on the setting of the property "file.encoding") +say "-"~copies(79) +cp="Cp1252" -- code page the following string was created with +str1a=" [\xC4\xE4\xD6\xF6\xDC\xFC\xDF] - \xDCber, \xFCber den W\xF6lkchen, mu\xDF die Fr\xF6h\xE4it in \xD6sterland im \xC4rger wohl grenzenlo\xDF sein... ;) - [\xC4\xE4\xD6\xF6\xDC\xFC\xDF] " +say "Using codepage" pp(cp) "to exchange strings, taking advantage of BSFRawBytes() and java.lang.String constructors" +say "(the literal string 'str1a' was created in 'Cp1252')" +say +say "str1a:" pp(str1a) "(encoding" pp(cp)")" +say + + -- turn Rexx string into a Java string using encoding "Cp1252" +bArr=BSFRawBytes(str1a) -- turn Rexx string into Java byte array without any re/encoding +str1b=.java.lang.String~new(bArr,cp) -- create Java string object from Java byte array supplying codepage to use +say "str1b:" pp(str1b) -- a Java strinb object +say +jlabel~text=str1b -- assign Java string object to JLabel +jframe~pack -- resize (string in JLabel is now longer) + +str1c=jlabel~getText -- gets text translates to Rexx string using UTF-8 encoding + + +say "str1c:" pp(str1c) "(encoding" pp(currCP)")" +say +say "str1c~c2x:" pp(str1c~c2x) +say + -- turn Java string into a Rexx string using encoding "Cp1252" +str1d=jlabel~bsf.invokeJSO("getText") -- get Java string object +say "str1d:" pp(str1d) -- the reference to the Java string object +say +bArr=str1d~getBytes(cp) -- get the bytes from the Java string in "Cp1252" encoding +str1e=BSFRawBytes(bArr) -- t\xFCrn Java byte array into a Rexx string without any re/encoding +say "str1e:" pp(str1e) "(forced decoding with" pp(cp)", should be the same as 'str1a' above)" +say +say "Hit enter to continue..." +pull x + +------------------------------------------------------------------------------ + -- the code in this section depends on the setting "file.encoding" + -- should be: "file.encoding=UTF-8" (see prolog comment above how to achieve that) +say "-"~copies(79) +say +say "This section en-/decodes the string according to 'file.encoding' (should be set to 'UTF-8')" +if currCP<>"UTF-8" then +do + say "WARNING!" + say "WARNING: 'file.encoding="currCP"', *NOT* set to 'UTF-8'!" + say " (The encoding to Java will NOT be right, the JLabel text will look akward!)" + say "WARNING!" + bsf.loadClass("java.awt.Toolkit")~getDefaultToolkit~beep -- beep using Java +end +say + + -- some UTF-8 characters +female ="e2 99 80"x +male ="e2 99 82"x +ballot ="e2 98 90"x +ballot_x ="e2 98 92"x +ballot_check ="e2 98 91"x +radioactive ="e2 98 a2"x +skullAndBones="e2 98 a0"x +umbrellaRain ="e2 98 94"x + +smiley ="e2 98 ba"x +frowney ="e2 98 b9"x +smileyBlack ="e2 98 bb"x + +peace ="e2 98 ae"x +yingYang ="e2 98 af"x + +utf8chars=female male ballot ballot_x ballot_check radioactive skullAndBones umbrellaRain - + smiley frowney smileyBlack peace yingYang + +str2a=utf8chars str1c utf8chars +say "str2a:" pp(str2a) "("currCP", pre-/ap-pended UTF-8 (symbolic) characters)" +say +jLabel~text=str2a -- this will cause encoding in the "file.encoding" codepage +jFrame~pack -- resize JLabel +str2b=jLabel~text -- this will cause decoding in the "file.encoding" codepage +say "str2b: " pp(str2b) "("currCP")" +say +say "Hit enter to continue..." +pull x +say + +------------------------------------------------------------------------------ + -- the code in this section explicitly en-/decodes the string encoded as "UTF-8" (does not + -- rely on the setting of the property "file.encoding") +say "-"~copies(79) +say +txt="explicitly using UTF-8, *NOT* relying on 'file.encoding=UTF-8'" +jLabel~text=" --> next round," txt "<-- " +jFrame~pack -- resize JLabel +say "Now" txt +say "Hit enter to continue..." +pull x + +str3a=x2c("20 5B C3 84 C3 A4 C3 96 C3 B6 C3 9C C3 BC C3 9F 5D 20 2D 20 C3 9C 62 65 72 2C 20 C3" - + "BC 62 65 72 20 64 65 6E 20 57 C3 B6 6C 6B 63 68 65 6E 2C 20 6D 75 C3 9F 20 64 69 65" - + "20 46 72 C3 B6 68 C3 A4 69 74 20 69 6E 20 C3 96 73 74 65 72 6C 61 6E 64 20 69 6D 20" - + "C3 84 72 67 65 72 20 77 6F 68 6C 20 67 72 65 6E 7A 65 6E 6C 6F C3 9F 20 73 65 69 6E" - + "2E 2E 2E 20 3B 29 20 2D 20 5B C3 84 C3 A4 C3 96 C3 B6 C3 9C C3 BC C3 9F 5D 20") +say "str3a:" pp(str3a) "(explicitly encoded in UTF-8)" +str3b=utf8chars str3a utf8chars +say "str3b:" pp(str3b) "(explicitly encoded in UTF-8)" +say + -- turn UTF-8-Rexx string into a Java byte array and turn that one into a Java String (indicating byte array is UTF-8) +jLabel~text=.java.lang.String~new(BSFRawBytes(str3b),"UTF-8") +jFrame~pack -- resize JLabel + -- get UTF-8 Java characters as Java byte array, turn into a Rexx string without recoding +str3c=BSFRawBytes(jLabel~bsf.invokeJSO("getText")~getBytes("UTF-8")) +say "str3c: " pp(str3c) "(UTF-8)" +say +say "Hit enter to continue..." +pull x + + + -- the code in this section explicitly en-/decodes the string encoded as "UTF-8" (does not + -- rely on the setting of the property "file.encoding") +say "-"~copies(79) +say +txt="explicitly using UTF-8, *NOT* relying on 'file.encoding=UTF-8'" +jLabel~text=" --> next round," txt "<-- " +jFrame~pack -- resize JLabel +say "Again" txt "by employing" +say "the public routines from BSF.CLS: utf8stringAsJSO(str) and JSOasUtf8string(jso)" +say +say "Hit enter to continue..." +pull x + +jLabel~text=utf8stringAsJSO(str3b) -- turn UTF-8 Rexx string into a Java String object (JSO) +jFrame~pack -- resize JLabel +res=JSOasUtf8string(jLabel~bsf.invokeJSO("getText")) -- get UTF-8 encoded Rexx string +say "str3b=res?" pp(str3b=res) -- show whether both UTF-8 encoded Rexx strings are the same +say "str3b:" pp(str3b) +say +say "res :" pp(res) + +say "Hit enter to continue..." +pull x + + +::requires bsf.cls -- get Java camouflaging support This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <or...@us...> - 2015-05-11 18:37:44
|
Revision: 285 http://sourceforge.net/p/bsf4oorexx/code/285 Author: orexx Date: 2015-05-11 18:37:41 +0000 (Mon, 11 May 2015) Log Message: ----------- 20150511 Initial JSR223 support. Modified Paths: -------------- trunk/bsf4oorexx.dev/cmpj.cmd trunk/bsf4oorexx.dev/source_java/Test.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java trunk/org/rexxla/bsf/engines/rexx/RexxEngine.class trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.class Added Paths: ----------- trunk/bsf4oorexx.dev/source_java/RexxCompiledScript.class trunk/bsf4oorexx.dev/source_java/RexxScriptEngine.class trunk/bsf4oorexx.dev/source_java/RexxScriptEngineFactory.class trunk/org/rexxla/bsf/engines/rexx/jsr223/ trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.class trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.java trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngine.class trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngine.java trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngineFactory.class trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngineFactory.java Modified: trunk/bsf4oorexx.dev/cmpj.cmd =================================================================== --- trunk/bsf4oorexx.dev/cmpj.cmd 2015-05-11 18:27:13 UTC (rev 284) +++ trunk/bsf4oorexx.dev/cmpj.cmd 2015-05-11 18:37:41 UTC (rev 285) @@ -25,6 +25,7 @@ rem set default path to org.rexxla.bsf, 2005-06-02, ---rgf set path2engine=%path2root%\org\rexxla\bsf\engines\rexx +set path2jsr223=%path2root%\org\rexxla\bsf\engines\rexx\jsr223 set path2rexxlaBsf=%path2root%\org\rexxla\bsf @@ -103,4 +104,12 @@ javac %javacDefines% %source% %target% %javaSrc%\RexxConfiguration.java && copy %javaSrc%\RexxConfiguration* %path2engine% +@rem 2015-05-11 +set target=-target 1.6 +set source=-source 1.6 + +javac %javacDefines% %source% %target% %javaSrc%\RexxScriptEngine.java && copy %javaSrc%\RexxScriptEngine.* %path2jsr223% +javac %javacDefines% %source% %target% %javaSrc%\RexxScriptEngineFactory.java && copy %javaSrc%\RexxScriptEngineFactory* %path2jsr223% +javac %javacDefines% %source% %target% %javaSrc%\RexxCompiledScript.java && copy %javaSrc%\RexxCompiledScript* %path2jsr223% + endlocal Added: trunk/bsf4oorexx.dev/source_java/RexxCompiledScript.class =================================================================== (Binary files differ) Index: trunk/bsf4oorexx.dev/source_java/RexxCompiledScript.class =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxCompiledScript.class 2015-05-11 18:27:13 UTC (rev 284) +++ trunk/bsf4oorexx.dev/source_java/RexxCompiledScript.class 2015-05-11 18:37:41 UTC (rev 285) Property changes on: trunk/bsf4oorexx.dev/source_java/RexxCompiledScript.class ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/bsf4oorexx.dev/source_java/RexxScriptEngine.class =================================================================== (Binary files differ) Index: trunk/bsf4oorexx.dev/source_java/RexxScriptEngine.class =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxScriptEngine.class 2015-05-11 18:27:13 UTC (rev 284) +++ trunk/bsf4oorexx.dev/source_java/RexxScriptEngine.class 2015-05-11 18:37:41 UTC (rev 285) Property changes on: trunk/bsf4oorexx.dev/source_java/RexxScriptEngine.class ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/bsf4oorexx.dev/source_java/RexxScriptEngineFactory.class =================================================================== (Binary files differ) Index: trunk/bsf4oorexx.dev/source_java/RexxScriptEngineFactory.class =================================================================== --- trunk/bsf4oorexx.dev/source_java/RexxScriptEngineFactory.class 2015-05-11 18:27:13 UTC (rev 284) +++ trunk/bsf4oorexx.dev/source_java/RexxScriptEngineFactory.class 2015-05-11 18:37:41 UTC (rev 285) Property changes on: trunk/bsf4oorexx.dev/source_java/RexxScriptEngineFactory.class ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Modified: trunk/bsf4oorexx.dev/source_java/Test.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$1.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$2.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$ExitDelayed.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava$SyncPutGet.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2015-05-11 18:27:13 UTC (rev 284) +++ trunk/org/rexxla/bsf/engines/rexx/RexxAndJava.java 2015-05-11 18:37:41 UTC (rev 285) @@ -21,7 +21,7 @@ * * * <pre>------------------------ Apache Version 2.0 license ------------------------- - * Copyright (C) 2001-2014 Rony G. Flatscher + * Copyright (C) 2001-2015 Rony G. Flatscher * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,7 +36,7 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 4.2.0, 2014-10-05 + * @version 4.2.1, 2015-05-09 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) */ @@ -48,6 +48,13 @@ */ /* + 2015-05-09, ---rgf, - added access to important Rexx objects and interpreter related information + - protected native Object jniGetLocalEnvironment0 + - protected native Object jniGetGlobalEnvironment0 + - protected native Object jniNil0 + - protected native long jniInterpreterVersion0 + - protected native long jniLanguageLevel0 + 2014-10-04, ---rgf, - add subfunctions that return a reference to a java.lang.String object or a NetRexx object, if such a value needs to be returned (rather than turning it into a Rexx string), added subfunctions: @@ -319,7 +326,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "420.20141005"; + static final public String version = "421.20150509"; static final private String pkgName = "org.rexxla.bsf.engines.rexx"; @@ -841,10 +848,12 @@ protected native int jniRexxTerminateInterpreterInstance (String rii_ID); // use Terminate(), but *must* be issued from the original thread context + // ------------------ JNI functions meant to be accessed by Java exit handlers only! + // (these jni functions need a properly set up opaque slot argument!) + // rgf, 2012-02-08, used for allowing exit and command handlers to interact with their RexxExitContext // for raising conditions and querying/setting variables. // - protected native void jniRaiseCondition (Object[] slot, String conditionName, String description, Object[] additional, Object result); protected native void jniRaiseException (Object[] slot, long definedErrorNumber, Object[] substitutions); protected native void jniRaiseException0 (Object[] slot, long definedErrorNumber); @@ -853,7 +862,7 @@ protected native Object jniGetContextVariable(Object[] slot, String variableName); protected native void jniSetContextVariable(Object[] slot, String variableName, Object variableValue); - // rgf, 2012-02-11 + // rgf, 2012-02-11: for RexxHandler access only (these jni functions need a properly set up opaque slot argument!) protected native boolean jniCheckCondition (Object[] slot); protected native void jniClearCondition (Object[] slot); protected native Object jniGetConditionInfo (Object[] slot); @@ -861,30 +870,40 @@ protected native void jniSetThreadTrace (Object[] slot, boolean state); protected native void jniHaltThread (Object[] slot); - // rgf, 2012-02-12 + // rgf, 2012-02-12: for RexxHandler access only (these jni functions need a properly set up opaque slot argument!) protected native void jniDropContextVariable(Object[] slot, String variableName); - // rgf, 2012-02-18 + // rgf, 2012-02-18: for RexxHandler access only (these jni functions need a properly set up opaque slot argument!) protected native void jniSetContextVariableToNil(Object[] slot, String variableName); - // rgf, 2012-02-19 + // rgf, 2012-02-19: for RexxHandler access only (these jni functions need a properly set up opaque slot argument!) protected native Object jniGetCallerContext (Object[] slot); protected native Object jniGetAllContextVariables(Object[] slot); - // rgf, 2012-02-24 + // rgf, 2012-02-24: for RexxHandler access only (these jni functions need a properly set up opaque slot argument!) protected native Object jniGetLocalEnvironment(Object[] slot); protected native Object jniGetGlobalEnvironment(Object[] slot); - - // rgf, 2012-02-25 + // rgf, 2012-02-25: for RexxHandler access only (these jni functions need a properly set up opaque slot argument!) protected native Object jniNil(Object[] slot); protected native long jniInterpreterVersion(Object[] slot); protected native long jniLanguageLevel (Object[] slot); - // rgf, 2014-03-29 protected native String jniProcEnvironment(int function, String envName, String envValue); + // ------------------ allow fetching a few important Rexx objects resp. Rexx interpreter related information + // rgf, 2015-05-09 + protected native Object jniGetLocalEnvironment0 (String rii_ID); + protected native Object jniGetGlobalEnvironment0(String rii_ID); + protected native Object jniNil0 (String rii_ID); + protected native long jniInterpreterVersion0 (String rii_ID); + protected native long jniLanguageLevel0 (String rii_ID); + + + + + /** rgf, 2003-01-15, used for allowing the BSF4ooRexx-DLL to get at *env, *obj and then to mid etc. * */ protected native int jniInitialize4Rexx() ; Modified: trunk/org/rexxla/bsf/engines/rexx/RexxEngine.class =================================================================== (Binary files differ) Modified: trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java 2015-05-11 18:27:13 UTC (rev 284) +++ trunk/org/rexxla/bsf/engines/rexx/RexxEngine.java 2015-05-11 18:37:41 UTC (rev 285) @@ -14,7 +14,7 @@ * using the RexxSAA interface. * * <pre>------------------------ Apache Version 2.0 license ------------------------- - * Copyright (C) 2001-2014 Rony G. Flatscher + * Copyright (C) 2001-2015 Rony G. Flatscher * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,7 +29,7 @@ * limitations under the License. * ----------------------------------------------------------------------------- </pre> * - * @version 4.5.0, 20140703 + * @version 4.5.1, 20150509 * @author Rony G. Flatscher (<a href="http://www.wu-wien.ac.at">WU-Wien/Wirtschaftsuniversität Wien</a>, <a href="http://www.wu-wien.ac.at/english">http://www.wu-wien.ac.at/english</a>) * */ @@ -37,6 +37,13 @@ /* last change: $Revision: 546 $ $Author: rony $ $Date: 2009-10-20 20:45:19 +0200 (Tue, 20 Oct 2009) $ + 2015-05-09, ---rgf, - added public methods + - getLocalEnvironment() ... returns .local + - getPublicEnvironment() ... returns .environment + - getNil() ... returns .nil + - getInterpreterVersion() ... returns long, where the least significant three bytes contain the version encoded + - getLanguageVersion() ... returns long, where the least significant two bytes contain the version encoded + 2014-07-03, ---rgf, - make sure that RexxProxy objects are always passed as Java objects in arguments; adapt apply() as well to pass through RexxProxy objects in arguments @@ -131,7 +138,7 @@ /** Version string indicating version of this class (majorVersion*100+minorVersion * concatenated with a dot and the sorted date of last change. */ - static final public String version = "450.20140703"; + static final public String version = "451.20150909"; /** If terminate() was invoked, then this instance must not be used anymore. */ @@ -254,6 +261,93 @@ + /** Get the ooRexx <code>.local</code> directory. + * + * @return a <code>RexxProxy</code> allowing access to the ooRexx <code>.local</code> directory + * @since 2015-05-09 + */ + public Object getLocalEnvironment() + { +System.err.println(this+".getLocalEnvrionment(), before doing a \"return rexxInterface.jniGetLocalEnvironment(rii_ID);\" ..."); + if (rii_ID==null) // Rexx interpreter instance (RII) not yet created, create it! + { + throw new NullPointerException("\"rii_ID\" (Rexx interpereter instance ID) null, Rexx interpreter instance not yet created (just eval() or apply() a script))"); + } + + return rexxInterface.jniGetLocalEnvironment0(rii_ID); + } + + /** Get the ooRexx <code>.environment</code> directory. + * + * @return a <code>RexxProxy</code> allowing access to the ooRexx <code>.environment</code> directory + * @since 2015-05-09 + */ + public Object getGlobalEnvironment() + { + if (rii_ID==null) // Rexx interpreter instance (RII) not yet created, create it! + { + throw new NullPointerException("\"rii_ID\" (Rexx interpereter instance ID) null, Rexx interpreter instance not yet created (just eval() or apply() a script))"); + } + return rexxInterface.jniGetGlobalEnvironment0(rii_ID); + } + + /** Get the ooRexx <code>.nil</code> object. + * + * @return a <code>RexxProxy</code> representint the ooRexx <code>.nil</code> sentinel object + * @since 2015-05-09 + */ + public Object getNil() + { + if (rii_ID==null) // Rexx interpreter instance (RII) not yet created, create it! + { + throw new NullPointerException("\"rii_ID\" (Rexx interpereter instance ID) null, Rexx interpreter instance not yet created (just eval() or apply() a script))"); + } + return rexxInterface.jniNil0(rii_ID); + } + + + /** (Copied from the ooRexx <code>rexxpg.pdf</code> documentation) "Returns + * the version of the interpreter. The returned version is + * encoded in the 3 least significant bytes of the returned value, + * using 1 byte each for the interpreter version, release, and revision + * values. For example, on a 32-bit platform, this value would be + * <code>0x00040000</code> for version 4.0.0." + * + * @return the ooRexx interpreter version + * @since 2015-05-09 + */ + public long getInterpreterVersion() + { + if (rii_ID==null) // Rexx interpreter instance (RII) not yet created, create it! + { + throw new NullPointerException("\"rii_ID\" (Rexx interpereter instance ID) null, Rexx interpreter instance not yet created (just eval() or apply() a script))"); + } + return rexxInterface.jniInterpreterVersion0(rii_ID); + } + + + /** (Copied from the ooRexx <code>rexxpg.pdf</code> documentation) "Returns the language level of + * the interpreter. The returned language level is encoded in the 2 least + * significant bytes of the returned value, using 1 byte each for the + * interpreter version, release, and revision values. For example, on a 32-bit + * platform, this value would be <code>0x00000603</code> for language level 6.03." + * + * @return the ooRexx language level + * @since 2015-05-09 + */ + public long getLanguageLevel() + { + if (rii_ID==null) // Rexx interpreter instance (RII) not yet created, create it! + { + throw new NullPointerException("\"rii_ID\" (Rexx interpereter instance ID) null, Rexx interpreter instance not yet created (just eval() or apply() a script))"); + } + return rexxInterface.jniLanguageLevel0(rii_ID); + } + + + + + /** Evaluates (executes) a piece of Rexx code * (can be a whole program as well) * <em>without</em> any Java-supplied arguments and returns the result. Modified: trunk/org/rexxla/bsf/engines/rexx/RexxExtendClass.class =================================================================== (Binary files differ) Added: trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.class =================================================================== (Binary files differ) Index: trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.class =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.class 2015-05-11 18:27:13 UTC (rev 284) +++ trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.class 2015-05-11 18:37:41 UTC (rev 285) Property changes on: trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.class ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.java (rev 0) +++ trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.java 2015-05-11 18:37:41 UTC (rev 285) @@ -0,0 +1,493 @@ +package org.rexxla.bsf.engines.rexx.jsr223; +import java.util.Vector; +import javax.script.*; + +import org.apache.bsf.BSFException; // BSF support + +import org.rexxla.bsf.engines.rexx.RexxEngine; +import org.rexxla.bsf.engines.rexx.RexxException; +import org.rexxla.bsf.engines.rexx.RexxProxy; + +/** Class that extends the <code>javax.script.CompiledScript</code> class and implements + * the <code>javax.script.Invocable</code> interface as this only makes sense in this + * class for {@link public <T> T getInterface(Class<T> clasz)}. Therefore the author + * (Rony G. Flatscher) who served on the JSR-223 specification committee) thinkgs that the documentation + * in <code>javax.script.Invocable</code> is false, as it states that <code>Invocable</code> gets implemented by a + * <code>ScriptEngine</code>, somehow indicating it has to operate on some "state" of the script engine. + * <br>Please note: the JSR-223 specification does not imply that ScriptEngine should implement this + * interface! + * <br>The [oo]Rexx implementation of JSR-223 tries to be as flexible as possible and also implements + * this interface in its implementation of <code>ScriptEngine</code> sharing as much code between + * the tow (and caching compiled scripts for invoking the aforementioned method in a sensible way. + * + * @author Rony G. Flatscher + * @since 2015-05-11 + * + */ +class RexxCompiledScript extends CompiledScript implements Invocable +{ + + private static final boolean bDebug=false; // true; // false; // true; + + /** Field that refers to the RexxScriptEngine instance which created this RexxCompiledScript. */ + RexxScriptEngine rse; + + + /** If set to <code>true</code> the <code>BSFException</code> (may contain a + * <code>RexxException</code> as cause) will be used to create and throw the <code>ScriptException</code>. + * If set to <code>false</code> the (Rexx formatted) message and the line number, if available, are used + * to create and throw the <code>ScriptException</code>. + */ + boolean bSupplyBSFExceptionObject=false; + + /** Getter for the Rexx script which got compiled (tokenized). + * @return the string representing of the compiled Rexx script + */ + public boolean getSupplyBSFExceptionObject() + { + return bSupplyBSFExceptionObject; + } + + /** Setter for the Rexx script which got compiled (tokenized). + * @return the string representing of the compiled Rexx script + */ + public void setSupplyBSFExceptionObject(boolean newValue) + { + bSupplyBSFExceptionObject=newValue; + } + + + + /** The filename used for evaluating (executing) the script or invoking functions or methods from the script */ + String filename; + + public String getFilename() + { + return filename; + } + + /** Getter for the Rexx script which got compiled (tokenized). + * @return the string representing of the compiled Rexx script + */ + + /** The script that was compiled (tokenized). */ + String scriptSource; + + /** Getter for the Rexx script which got compiled (tokenized). + * @return the string representing of the compiled Rexx script + */ + public String getScriptSource() + { + return scriptSource; + } + + /** The RexxProxy representing the compiled (tokenized) script (a Rexx routine object). */ + RexxProxy rexxScriptObject; + + /** Getter for the RexxProxy representing the Rexx routine object the script got compiled (tokenized) into. + * @return a RexxProxy representing the Rexx routine object + */ + public RexxProxy getScriptObject() + { + return rexxScriptObject; + } + + + /** A RexxProxy representing the script's package (a Rexx package object). */ + RexxProxy rexxPackageObject; + + /** Getter for the RexxProxy representing the Rexx routine object the script got compiled (tokenized) into. + * @return a RexxProxy representing the Rexx package object of this compiled script + */ + public RexxProxy getPackageObject() + { + return rexxPackageObject; + } + + + + RexxCompiledScript(RexxScriptEngine scriptEngine, + String scriptSource, + String filename, + boolean bSupplyBSFExceptionObject, + RexxProxy scriptRexxProxy, + RexxProxy scriptRexxPackage) + { + super(); + this.rse =scriptEngine; + this.scriptSource =scriptSource; + this.filename =filename; + this.bSupplyBSFExceptionObject=bSupplyBSFExceptionObject; + this.rexxScriptObject =scriptRexxProxy; + this.rexxPackageObject =scriptRexxPackage; + } + + /** Executes the program stored in this RexxCompiledScript object. + */ + public Object eval(ScriptContext sc) throws ScriptException + { +if (bDebug==true) { System.err.println("---> RCS ---> eval(), sc=["+sc+"]");} + if (sc==null) + { + throw new NullPointerException("Received \"ScriptContext sc\" argument null"); + } + + Object arrArgV[]; + try + { + arrArgV=createArgV((Object[])sc.getAttribute(ScriptEngine.ARGV), sc, rse); + } + catch (BSFException exc) + { + throw createScriptException(exc); + } + +if (bDebug==true) +{ + System.err.println("\t eval(), double check, arrArgV.length=["+arrArgV.length+"]"); + for (int i=0;i<arrArgV.length;i++) + { + System.err.println("\t\tarrArgV["+i+"]=["+arrArgV[i]+"]"); + } +} + + String filename=(String) sc.getAttribute(ScriptEngine.FILENAME); + if (filename==null) // no filename given + { + filename="filename_created_by_"+this.toString().replace('.','_').replace('@','-')+"_at_"+RexxScriptEngine.getGMTFormattedDate4Filename(); + } +if (bDebug==true) { System.err.println("---> RCS ---> filename=["+filename+"]");} + + try { +if (bDebug==true) { System.err.println("... eval(): before rse.updateRexxEngine(sc)");} + + rse.updateRexxEngine(sc); // make sure BSF.CLS support in JNI available; .input, .output, .error set accordingly +if (bDebug==true) +{ + System.err.println("... eval(): after rse.updateRexxEngine(sc)"); + for (int i=0;i<arrArgV.length;i++) + { + System.err.println("... ... RexxCompiledScript.eval(), arrArgV["+i+"]=["+arrArgV[i]+"]"); + } + System.err.println("... eval(): rexxScriptObject=["+rexxScriptObject+"]"); +} + return rexxScriptObject.sendMessage1("CALLWITH", arrArgV); // execute routine object + } + catch (BSFException exc) + { + throw createScriptException(exc); + } + } + + + + /** Returns the ScriptEngine whose compile method created this CompiledScript. + */ + public ScriptEngine getEngine() + { + return rse; + } + + +// ----------------------------------------------------------------------------------------------------- +// Invocable methods + /** Returns an implementation of an interface using functions compiled in the interpreter. + */ + public <T> T getInterface(Class<T> clasz) + { + + if (clasz==null) + { + throw new IllegalArgumentException("Received 'clasz' argument is null"); + } + if (! (clasz.isInterface()) ) + { + throw new IllegalArgumentException("Received 'clasz' argument is not an interface class"); + } + + ScriptContext sc=rse.getContext(); // get default ScriptContext +/* + // define a Rexx class that gets the routine object and its package object + // to dispatch Interface methods iva publich Rexx routines in its unknown method + String code= + "use arg rexxScript, rexxPackage, scriptContext \n" + + " -- create and return dispatcher object \n" + + "return .jsr223.DispatchInterfaceMethodsToPublicRexxRoutines~new(rexxScript, rexxPackage, scriptContext) \n" + + " \n" + + "::requires BSF.CLS -- get Java camouflaging support \n" + + " \n" + + " -- dispatcher class for Invocable' <T> T getInterface(Class<T> clasz) \n" + + "::class 'jsr223.DispatchInterfaceMethodsToPublicRexxRoutines' \n" + + " \n" + + "::method init -- constructor \n" + + " expose rexxScriptObject rexxScriptPackage jsr223ScriptContext \n" + + " use strict arg rexxScriptObject, rexxScriptPackage, jsr223ScriptContext \n" + + " \n" + + "::method unknown -- dispatch public routines instead \n" + + " expose rexxScriptObject rexxScriptPackage jsr223ScriptContext \n" + + " use strict arg methName, methArrArgv -- unknown message name and its arguments \n" + + " \n" + + " pubRoutines=rexxScriptPackage~publicRoutines -- get the public routines directory \n" + + " if pubRoutines~hasentry(methName)=.false then -- if public routine not available raise error \n" + + " raise syntax 93.1 array (methName) -- routine not found! \n" + + " \n" + + " -- add ScriptContext to BSF4ooRexx' slot argument (a Rexx directory added as last argument on callbacks) \n" + + " methArrArgv~lastItem~setentry('SCRIPTCONTEXT', jsr223ScriptContext) -- add ScriptContext \n" + + " \n" + + " pubRoutines~callWith(methName, methArrArgv) -- invoke routine \n" + + " if var('RESULT') then return result -- if a result object got returned, return it \n" ; + + Vector argVec=new Vector(); // define and set the arguments + argVec.add(rexxScriptObject); + argVec.add(rexxPackageObject); + // get and supply the default ScriptContext + argVec.add(sc); // supply it as last argument +*/ + + RexxProxy rp; + try { + // make sure BSF.CLS support in JNI available; .input, .output, .error set accordingly + rse.updateRexxEngine(sc); + + // create and get the ooRexx dispatching object, working on the available public routines + // rp=(RexxProxy) rse.getBsfRexxEngine().apply(this.toString()+"_create_interface_to_public_routine_dispatching_object", 0, 0, code, null, argVec); // new Vector(), new Vector()); + +if (bDebug==true) { System.err.println("---> ---> RexxCompiledScript() BEVOR trying to get access to object."); } + + rp=(RexxProxy) rse.getRoutineWrapper().sendMessage3("CALL", getScriptObject(), getPackageObject(), sc); + +if (bDebug==true) { System.err.println("<--- <--- RexxCompiledScript() AFTER trying to get access to object."); } + } + catch (Exception exc) // if a BSFException, return null + { + // cannot throw a ScriptException because it would violate the Interface definition of this method; + // try to inform the user anyway and give as much useful information as possible about the exception + System.err.println("Exception ["+exc+"] raised while trying to create dispatching object, cause: ["+exc.getCause()+"]"); + System.err.println("Exception ["+exc+"], stack trace:"); + exc.printStackTrace(); + System.err.println("Exception ["+exc+"], returning null to indicate failure"); + return null; + } + + // now create a JavaProxy where the Interface method invocations will forward a message by + // the name of the invoked method to the contained Rexx object + Object[] interfaces = new Object[1]; + interfaces[0]=clasz; + + return (T) rp.newJavaProxyInstance(interfaces); // create and return the Java proxy for the interface + } + + + /** Returns an implementation of an interface using member functions of a scripting object compiled in the interpreter. + * Uses the implementation in {@link RexxScriptEngine} to not duplicate code (and thereby making maintenance safer). + */ + public <T> T getInterface(Object thiz, Class<T> clasz) + { + +// TODO: - use a special class to embed thiz, which then adds the default SC as (second to?) last argument, such that +// the methods can get access to the defualt SC? +// - add an attribute jsr223ScriptContext, such that it can be changed later on? + + // use the implementation in RexxScriptEngine as this method is not CompiledScript related + return rse.getInterface(thiz,clasz); + } + + /** Used to call top-level procedures and functions (accessible public Rexx routines) defined in scripts. */ + public Object invokeFunction(String name, Object... args) throws ScriptException, NoSuchMethodException + { + if (name==null) + { + throw new NullPointerException("Received 'name' argument (function name) is null"); + } + + try { + RexxProxy publicRoutines=(RexxProxy) rexxPackageObject.sendMessage0("PUBLICROUTINES"); + String result=(String) publicRoutines.sendMessage1("HASENTRY", name); + +if (bDebug==true) { System.err.println("... ["+this+"]: checking for public routine \""+name+"\": result=["+result+"], result.getClass()="+result.getClass());} + + if ( result.equals("0")==true) // returned .false ? + { + throw new NoSuchMethodException("Received 'name' argument \""+name+"\" does not denote an existing, public Rexx routine"); + } + + // get the public routine, prepare arguments, invoke it + Object arrArgV[]=createArgV(args, rse.getContext(), rse); // supply default context + RexxProxy routine=(RexxProxy) publicRoutines.sendMessage1("ENTRY",name); // get routine + return routine.sendMessage1("CALLWITH",arrArgV); + } + catch (Exception exc) + { + // throw new ScriptException(exc); + throw createScriptException(exc); // create ScriptException and throw it + } + } + + + /** Calls a method on a script object compiled during a previous script execution, which is retained in the state of the ScriptEngine. + * Uses the implementation in {@link RexxScriptEngine} to not duplicate code (and thereby making maintenance safer). + * + */ + public Object invokeMethod(Object thiz, String name, Object... args) throws ScriptException, NoSuchMethodException + { + // use the implementation in RexxScriptEngine as this method is not CompiledScript related + return rse.invokeMethod(thiz, name, args); + } + + + // --------------- utility methods + + ScriptException createScriptException(Exception exc) + { + if (bSupplyBSFExceptionObject==true ) // return a plain ScriptException supplying the causing exception + { + return new ScriptException(exc); + } + + // just a plain BSFException or RexxException without the Rexx condition object: return causing exception + if (! (exc instanceof RexxException) || (((RexxException)exc).getRexxConditionObject()==null) ) + { + return new ScriptException(exc); + } + + // o.k., we are supposed to fill in as much information as possible, instead of supplying the BSFException + RexxProxy rco=((RexxException)exc).getRexxConditionObject(); // get Rexx condition object + + // TODO: create the values + String message =createRexxLikeConditionMessage(rco); + String filename="n/a"; + String position=null; + try { + filename=(String)rco.sendMessage0("PROGRAM"); + position=(String)rco.sendMessage0("POSITION"); + } + catch (Exception bsfexc) {} + + int line =-1; // indicate unknown line + + if (position instanceof String) + { + line= Integer.valueOf(position).intValue(); + } + return new ScriptException(message, filename, line); + } + + + + /** Utility method which should (after debugging) be moved to RexxException to serve all Java clients. + * Modelled after <code>BSF4ooRexx.cc</code>'s <code>RgfCreateRexxlikeErrorInfo</code> function. + * @param rco a Rexx proxy allowing access to the Rexx condtion object (a Rexx directory) + */ + String createRexxLikeConditionMessage(RexxProxy rco) + { + StringBuffer sb=new StringBuffer(); + String conditionName=null; + + try + { + conditionName=(String) rco.sendMessage0("CONDITION"); + if (conditionName.equals("SYNTAX")) // format a syntax condition + { + // line # 1 + sb.append((String) ((RexxProxy) rco.sendMessage0("TRACEBACK")).sendMessage0("FIRSTITEM")); + sb.append('\n'); + + // line # 2 + sb.append(String.format("Error %s running %s line %s: %s", + (String) rco.sendMessage0("RC"), + (String) rco.sendMessage0("PROGRAM"), + (String) rco.sendMessage0("POSITION"), + (String) rco.sendMessage0("ERRORTEXT"))); + sb.append('\n'); + sb.append(String.format("Error %s: %s", + (String) rco.sendMessage0("CODE"), + (String) rco.sendMessage0("MESSAGE"))); + } + + else if (conditionName.equals("NOVALUE")) // format a novalue condition + { + // line # 1 + sb.append((String) ((RexxProxy) rco.sendMessage0("TRACEBACK")).sendMessage0("FIRSTITEM")); + sb.append('\n'); + + // line # 2 + sb.append(String.format("Rexx condition [%s] raised for variable [%s] running %s line: %s", + conditionName, + (String) rco.sendMessage0("DESCRIPTION"), + (String) rco.sendMessage0("PROGRAM"), + (String) rco.sendMessage0("POSITION"))); + } + // as of ooRexx 4.2.0 for "failure", "error", "user": only entries CONDITION, RC (for failure and error) available + else + { + // line # 1 + sb.append(String.format("Rexx condition [%s] raised running %s", + conditionName, filename )); + + if (! (conditionName.startsWith("USER"))) // a failure or error condition has a RC value going with it + { + sb.append(String.format(", return code [%s]", + (String) rco.sendMessage0("RC"))); + } + + } + } + catch (Exception exc) + { + throw new IllegalArgumentException("accessing argument \"rco\" with conditionname ["+conditionName+"] caused the exception: ["+exc+"]"); + } + return sb.toString(); + } + + + /** Creates and returns the argument array, append ScriptContext sc as last argument + * for the Rexx script to be able to fetch it. As of ooRexx 4.2.0 the routine's <code>CALLWITH</code> + * method sends a <code>MAKEARRAY</code> message which will compact the Java array by removing <code>null</code> + * values (behaviour of {@link ArrayWrapper} to mimickry the ooRexx <code>Array MAKEARRAY</code> behaviour + * (ooRexx arrays are capapble of distinguishing whether an entry is empty or is explicitly set + * to <code>.nil</code>). To keep the argument array intact when there are Java array entries with the + * value <code>null</code> a {@link RexxProxy} for the ooRexx <code>.nil</code> object is used for replacement. + * the Rexx code fetching such an argument needs to unwrap the contained ooRexx <code>.nil</code> object using + * the external BSF function <code>BsfRexxProxy(rexxProxy,"ooRexxObject")</code>. + * + * @param args Object array with arguments to be supplied to the Rexx script + * @param sc ScriptContext to be appended to the arguments for the Rexx script + * @return an Object array containing all arguments to be passed on to the Rexx script + */ + static Object[] createArgV(Object[] args, ScriptContext sc, RexxScriptEngine rse) throws ScriptException, BSFException + { + int argsLength= (args!=null ? args.length : 0); + Object arrArgV[]=new Object[argsLength+1]; + int i=0; + + if (args!=null && args.length>0) // if ARGV array is given and has entries, then create argument vector + { + Object rexxNil=rse.getNil(); + for (i=0; i<args.length; i++) // loop over arguments + { + +if (bDebug) { System.err.println("===> createArgV(), args["+i+"]=["+args[i]+"]"); } + + Object o=args[i]; + arrArgV[i]=( o==null ? rexxNil : o ); + } + } + + // add as last argument, so scripts can always fetch the current ScriptContext; + // make sure last argument is a Rexx directory, with an entry "SCRIPTCONTEXT" storing the ScriptContext object + // (this way Rexx routines - even those invoked from JavaProxy invocations - can rely that + // the last argument is a directory containing an entry "SCRIPTCONTEXT") + +if (bDebug) +{ + System.err.println("===> createArgV(), about to add ScriptContext argument!"); + RexxProxy gcd=rse.getCreateDirectory(); + System.err.println(" gcd=["+gcd+"]"); +} + + arrArgV[i]=rse.getCreateDirectory().sendMessage2("CALL","SCRIPTCONTEXT",sc); + return arrArgV; + } + + +} Property changes on: trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxCompiledScript.java ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngine.class =================================================================== (Binary files differ) Index: trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngine.class =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngine.class 2015-05-11 18:27:13 UTC (rev 284) +++ trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngine.class 2015-05-11 18:37:41 UTC (rev 285) Property changes on: trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngine.class ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngine.java =================================================================== --- trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngine.java (rev 0) +++ trunk/org/rexxla/bsf/engines/rexx/jsr223/RexxScriptEngine.java 2015-05-11 18:37:41 UTC (rev 285) @@ -0,0 +1,1042 @@ +package org.rexxla.bsf.engines.rexx.jsr223; +import javax.script.*; + +import java.util.Vector; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; + +import java.util.Date; +import java.text.SimpleDateFormat; +import java.util.TimeZone; + +import java.util.List; +import java.util.Vector; + +import org.apache.bsf.BSFManager; // BSF support +import org.apache.bsf.BSFException; // BSF support + +import org.rexxla.bsf.engines.rexx.RexxEngine; +import org.rexxla.bsf.engines.rexx.RexxProxy; +import org.rexxla.bsf.engines.rexx.RexxException; + + +/** Class that extends extends the <code>javax.script.ScriptEngine</code> class and implements the + * <code>javax.script.Compilalbe</code> and * the <code>javax.script.Invocable</code> interface, + * although the latter one would only make sense in {@link RexxCompiledScript} class, because of the + * {@link public <T> T getInterface(Class<T> clasz)} method. Therefore the author (Rony + * G. Flatscher who served on the JSR-223 specification committee) thinks that the documentation + * in <code>javax.script.Invocable</code> is false, as it states that <code>Invocable</code> gets implemented by a + * <code>ScriptEngine</code>, somehow indicating it has to operate on some "state" of the script engine. + * <br>Please note: the JSR-223 specification does not imply that ScriptEngine should implement this + * interface! + * <br>The [oo]Rexx implementation of JSR-223 tries to be as flexible as possible and also implements + * this interface in its implementation of <code>ScriptEngine</code> sharing as much code between + * the tow (and caching compiled scripts for invoking the aforementioned method in a sensible way. + * + * @author Rony G. Flatscher + * @since 2015-05-11 + * + */ +public class RexxScriptEngine extends AbstractScriptEngine implements Compilable, Invocable +{ + + /* if set to false the Java compiler will remove all bDebug-controlled statements */ + static private final boolean bDebug=false; // true; // false; // true; + + // - define a public static flag that determines which version of the ScriptException should be used (passing on RexxException or supplying message, linenr, colnr?) + /** This controls whether ScriptExceptions should supply the <code>RexxException</code> object (extends <code>BSFException</code>) or fill in the ScriptException + * fields (message, line and column number, if present). Using <code>BSFException.getCause()</code> will return + * the <code>RexxException</code> object, that has a method <code>getRexxConditionObject</code> which is a <code>RexxProxy</code> for + * the Rexx directory (cf. the ooRexx condition object documentation for its entries). + * <br>If set to <code>false</code>, then an attempt is made to supply as much information according to + * the <code>ScriptException</code> constructors, which might ease generic script editors that use JSR223 script engines. + */ + public static boolean bSupplyBSFExceptionObject=true; + + /** Caches the latest reader fetched from the script context. ooRexx will store this in <code>.input</code>, such that + * it is not necessary to set this value each time a script gets invoked or evaluated. + */ + Reader cachedReader; + + /** Caches the latest writer fetched from the script context. ooRexx will store this in <code>.output</code>, such that + * it is not necessary to set this value each time a script gets invoked or evaluated. + */ + Writer cachedWriter; + + /** Caches the latest writer fetched from the script context. ooRexx will store this in <code>.error</code>, such that + * it is not necessary to set this value each time a script gets invoked or evaluated. + */ + Writer cachedErrorWriter; + + /** Caches the last compiled script. This is necessary in the case that <code>Invocation</code> methods + * get invoked (namely "<code><T> T getInterface(Class;<T> clasz)/code>") + * via the ScriptEngine as the <code>javax.script.Invocable</code> documentation (in + * the author's (Rony G. Flatscher) opinion, who also has served on the JSR-223 specification + * team for javax.script) erroneously states that <code>Invocable</code> should be implemented + * by a <code>ScriptEngine</code> rather than a CompiledScript</code>. + */ + RexxCompiledScript currentScript; + + /** Getter method for "current" (the latest evaluated) script. Due to the ooRexx architecture + * each script gets compiled (actually tokenized and its package set up) and will be stored in a field. + * Each script that gets evaluated will replace the {@link currentScript} object. + * Fetching this {@link RexxCompiledScript} allows one to execute it as many times as needed, but also + * use all of the implemented {@link Invocable} methods. + * + * @return the current (latest) {@link RexxCompiledScript} object or <code>null</code> if no script has + * been evaluated or compiled yet + */ + public RexxCompiledScript getCurrentScript() + { + return currentScript; + } + + + + /** Rexx code to dynamically require "<code>BSF.CLS</code>". This makes sure that the + * native part of <code>BSF4ooRexx</code> is set to support the camouflaging support from the beginning. + */ + public static final String dynamicallyRequireBSF=".context~package~addPackage(.package~new('BSF.CLS')); /* <-- injected by RexxScriptEngine.compile() */ "; + + // - define a public static flag that determines whether we should add a prolog statement to make sure that BSF.CLS gets required (dynamically in this case) + /** This controls whether the supplied Rexx scripts should get a dynamic requires statement prepended that + * makes sure that the Java support is present. This may cause runtime errors, if the first statement in the + * Rexx script is a hash-bang line (if present it must be the very first line, because the ooRexx interpreter + * removes it for execution). + */ + public static boolean bPrependDynamicRequiresStatement=true; + + + /** This controls whether the initial requires for 'BSF.CLS' has been carried out or not, which is necessary + * to allow the very first Rexx script to pass Java objects as arguments already. + */ + boolean bInitialBSFRequiresDone=false; + + + /** Stores the BSF Rexx engine which gets used to invoke the scripts */ + RexxEngine bsfRexxEngine; + + /** Getter method that returns the BSF scripting engine in use. + * @return the BSF Rexx engine used for this RexxScriptEngine + */ + public RexxEngine getBsfRexxEngine() + { + return bsfRexxEngine; + } + + private Object nil=null; + public Object getNil() + { + if (nil==null) + { + nil=bsfRexxEngine.getNil(); + } + return nil; + } + + + /** Stores the BSF Rexx manager that is used for loading the BSF Rexx engine. */ + BSFManager bsfMgr; + + /** Getter method that returns the BSF manager used for managing this BSF scripting engine. + * @return the BSF manager used for managing this RexxScriptEngine + */ + public BSFManager getBsfManager() + { + return bsfMgr; + } + + + /** Rexx code to create and return a Rexx routine object from Rexx code. */ + String rexxCreateRoutineCode= + "use strict arg name, code \n" + + "return .routine~new(name,code) \n" + + "::requires 'BSF.CLS' \n" ; + + /** <code>RexxProxy</code> for the Rexx routine created by the Rexx code stored in {@link rexxCreateRoutineCodeCode}. */ + private RexxProxy rexxCreateRoutine=null; + + /** Getter method to return {@link rexxCreateRoutineCode}. If {@link rexxCreateRoutineCode} is <code>null</code> + * the Rexx routine object will get created, stored and returned. + * @return the <code>RexxProxy</code> for the Rexx routine to create a Rexx directory (and optionally supply + * a single entry) + */ + RexxProxy getCreateRoutine() throws ScriptException + { +if (bDebug==true){ System.err.println("arrived: getCreateRoutine(), rexxCreateRoutine="+rexxCreateRoutine);} + if (rexxCreateRoutine!=null) + { + return rexxCreateRoutine; + } + + String filename="RexxScriptEngine_rexxCreateRoutineCode.rex"; + try + { + updateRexxEngine(null); + Vector args=new Vector(); + args.add("CreateRoutineCode"); + args.add(rexxCreateRoutineCode); + +if (bDebug==true){ System.err.println(" --- getCreateRoutine(), BEVOR bsfRexxEngine="+bsfRexxEngine+", rexxCreateRoutine="+rexxCreateRoutine);} + rexxCreateRoutine=(RexxProxy) bsfRexxEngine.apply(filename, 0, 0, rexxCreateRoutineCode, null, args); +if (bDebug==true){ System.err.println(" --- getCreateRoutine(), AFTER bsfRexxEngine="+bsfRexxEngine+", rexxCreateRoutine="+rexxCreateRoutine);} + } + catch (Exception exc) + { + // in this very initial phase of compilation (tokenization) of the Rexx script always supply the cause exception +if (bDebug==true) {exc.printStackTrace(); } + + throw new ScriptException(exc); // re-throw, wrap cause in script + } + return rexxCreateRoutine; + } + + + /** Rexx code to create and return a Rexx routine object from Rexx code. */ + String rexxMonitorWrapperCode= + " use arg rexxObject, scriptContext \n" + + " -- say 'in rexxMonitorWrapperCode prolog...' \n" + + " \n" + + " -- create and return dispatcher object \n" + + " return .DispatchWrapper~new(rexxObject, scriptContext) \n" + + " \n" + + " ::requires BSF.CLS -- get Java camouflaging support \n" + + " \n" + + " -- dispatcher class for Invocable' <T> T getInterface(Object thiz, Class<T> clasz) \n" + + " ::class 'DispatchWrapper' \n" + + " \n" + + " ::method init -- constructor \n" + + " expose rexxScriptObject jsr223ScriptContext \n" + + " use strict arg rexxScriptObject, jsr223ScriptContext \n" + + " \n" + + " -- add ScriptContext to slotDir (last) argument, forward method invocation \n" + + " ::method unknown -- dispatch public routines instead \n" + + " expose rexxScriptObject jsr223ScriptContext \n" + + " use strict arg methName, methArrArgv -- unknown message name and its arguments \n" + + " \n" + + " -- add ScriptContext to BSF4ooRexx' slot argument (a Rexx directory added as last argument on callbacks) \n" + + " methArrArgv~lastItem~setentry('SCRIPTCONTEXT', jsr223ScriptContext) -- add ScriptContext \n" + + " \n" + + " forward message (methName) to (rexxScriptObject) arguments (methArrArgv) -- forward message \n" ; + + /** <code>RexxProxy</code> for using an in-between (monitor) class for adding the <code>ScriptContext</code> + * to the slotDir directory added by BSF4ooRexx in Java call-back scenarios. + */ + private RexxProxy rexxMonitorWrapper=null; + + /** Getter method to return the ooRexx routine. If {@link rexxMonitorWrapper} is <code>null</code> + * the Rexx routine object will get created, stored and returned. + * @return the <code>RexxProxy</code> for the Rexx routine + */ + RexxProxy getMonitorWrapper() throws ScriptException + { +if (bDebug==true){ System.err.println("arrived: getMonitorWrapper(), rexxMonitorWrapper="+rexxMonitorWrapper);} + if (rexxMonitorWrapper!=null) + { + return rexxMonitorWrapper; + } + + try + { + updateRexxEngine(null); +/* + String filename="RexxScriptEngine_rexxMonitorWrapperCode.rex"; + Vector args=new Vector(); + args.add("MonitorWrapperCode"); + args.add(rexxMonitorWrapperCode); + +if (bDebug==true){ System.err.println(" --- getMonitorWrapper(), BEVOR bsfRexxEngine="+bsfRexxEngine+", rexxMonitorWrapper="+rexxMonitorWrapper);} + + rexxMonitorWrapper=(RexxProxy) bsfRexxEngine.apply(filename, 0, 0, rexxMonitorWrapperCode, null, args); +*/ + rexxMonitorWrapper=(RexxProxy) getCreateRoutine().sendMessage2("CALL", "MonitorWrapperCode", rexxMonitorWrapperCode); + + +if (bDebug==true){ System.err.println(" --- getMonitorWrapper(), AFTER bsfRexxEngine="+bsfRexxEngine+", rexxMonitorWrapper="+rexxMonitorWrapper);} + } + catch (Exception exc) + { + // in this very initial phase of compilation (tokenization) of the Rexx script always supply the cause exception +if (bDebug==true) {exc.printStackTrace(); } + + throw new ScriptException(exc); // re-throw, wrap cause in script + } + return rexxMonitorWrapper; + } + + /** Rexx code to create and return a Rexx routine object from Rexx code. */ + String rexxRoutineWrapperCode= + "use arg rexxScript, rexxPackage, scriptContext \n" + + " \n" + + "-- say '/// --> /// in rexxRoutineWrapperCode - prolog... arg()='arg() \n" + + " \n" + + " -- create and return dispatcher object \n" + + "return .DispatchToToPublicRoutines~new(rexxScript, rexxPackage, scriptContext) \n" + + " \n" + + "::requires BSF.CLS -- get Ja... [truncated message content] |