[rfc][icedtea-web 1.5] backporting of Re: [rfc][icedtea-web] run on any open/oracle jdk (and ibm jdk!)) (was /hg/icedtea-web: 5 new changesets )
Jiri Vanek
jvanek at redhat.com
Tue Jun 17 12:32:13 UTC 2014
hi!
I would like to backport (yes, all of it :( ) this to 1.5, as we need to support JDK8 here.
Except multicatch and diamond it should be jdk6 compatible.
Also some time afferent this I would like to schedule 1.5.1 release, so please think about what
needs to be backported or done for it.
Thank you!
J.
On 05/22/2014 06:30 PM, jvanek at icedtea.classpath.org wrote:
> changeset c6591d36d68a in /hg/icedtea-web
> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=c6591d36d68a
> author: Jiri Vanek <jvanek at redhat.com>
> date: Thu May 22 16:45:11 2014 +0200
>
> Made it works (basicaly) on any JDK
>
>
> changeset b1e4f8185c10 in /hg/icedtea-web
> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=b1e4f8185c10
> author: Jiri Vanek <jvanek at redhat.com>
> date: Thu May 22 17:21:35 2014 +0200
>
> All tests adapted to run from XBootclaspath (forced by extending package private rt.jar class)
>
>
> changeset 7ce5153a6fd1 in /hg/icedtea-web
> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=7ce5153a6fd1
> author: Jiri Vanek <jvanek at redhat.com>
> date: Thu May 22 17:57:52 2014 +0200
>
> Making the previous chnage actualy take an effect. All tests runs using CLASSPATH varibale on line, separated by semicolon.
>
>
> changeset 96ccc89ddb57 in /hg/icedtea-web
> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=96ccc89ddb57
> author: Jiri Vanek <jvanek at redhat.com>
> date: Thu May 22 18:08:36 2014 +0200
>
> Added accidentally skipped hunk
>
>
> changeset 0c7dcde1cfe0 in /hg/icedtea-web
> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=0c7dcde1cfe0
> author: Jiri Vanek <jvanek at redhat.com>
> date: Thu May 22 18:30:41 2014 +0200
>
> Fixed slipped test classlaoder fix in JavawsAWTRobotFindsButtonTest.java
>
>
> diffstat:
>
> ChangeLog | 52 ++++
> Makefile.am | 37 +-
> acinclude.m4 | 43 +--
> configure.ac | 2 +-
> netx/net/sourceforge/jnlp/NetxPanel.java | 24 +-
> netx/sun/applet/AppletViewerPanelAccess.java | 122 ++++++++++
> netx/sun/applet/package-info.java | 37 +++
> plugin/icedteanp/java/sun/applet/PluginAppletPanelFactory.java | 2 +-
> plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 12 +-
> tests/netx/unit/net/sourceforge/jnlp/JNLPMatcherTest.java | 2 +-
> tests/reproducers/simple/JavawsAWTRobotFindsButton/testcases/JavawsAWTRobotFindsButtonTest.java | 2 +-
> tests/test-extensions/net/sourceforge/jnlp/awt/imagesearch/ComponentFinder.java | 2 +-
> 12 files changed, 269 insertions(+), 68 deletions(-)
>
> diffs (truncated from 603 to 500 lines):
>
> diff -r 02a18cce94c7 -r 0c7dcde1cfe0 ChangeLog
> --- a/ChangeLog Wed May 21 11:08:18 2014 -0400
> +++ b/ChangeLog Thu May 22 18:30:41 2014 +0200
> @@ -1,3 +1,55 @@
> +2014-05-21 Jiri Vanek <jvanek at redhat.com>
> +
> + Fixed slipped test classlaoder fix
> + * sts/reproducers/simple/JavawsAWTRobotFindsButton/testcases/JavawsAWTRobotFindsButtonTest.java
> + (static init) used system classlaoder to laod image
> +
> +2014-05-21 Jiri Vanek <jvanek at redhat.com>
> +
> + * netx/sun/applet/AppletViewerPanelAccess.java: addedd accidentally skipped
> + createAppletThread method
> +
> +2014-05-21 Jiri Vanek <jvanek at redhat.com>
> +
> + Making the previous chnage actualy take an effect.
> + * Makefile.am: All tests runs using CLASSPATH varibale on line, separated by
> + semicolon. I have no idea wy this was needing.
> +
> +2014-05-21 Jiri Vanek <jvanek at redhat.com>
> +
> + All tests adapted to run from XBootclaspath (forced by extending package private
> + rt.jar class)
> + * Makefile.am: all sets of call of -Xbootclasspath in tests and coverage
> + are now adding $CLASSPATH to boot classapth. Where CLASSPATH was not deffined,
> + was added.
> + * tests/netx/unit/net/sourceforge/jnlp/JNLPMatcherTest.java: and
> + * tests/test-extensions/net/sourceforge/jnlp/awt/imagesearch/ComponentFinder.java:
> + resources loaded from boot classloader
> +
> +2014-05-21 Jiri Vanek <jvanek at redhat.com>
> +
> + Made it works (basicaly) on any JDK
> + * Makefile.am: (NETX_PKGS) sun.applet added to recognized netx packages
> + (netx-dist.stamp) sun directory included into packed list
> + * acinclude.m4: removed (IT_CHECK_FOR_APPLETVIEWERPANEL_HOLE) check. Added
> + IT_CHECK_FOR_SUN_APPLET_ACCESSIBILITY, which test existence of
> + classes sun.applet.AppletPanel, sun.applet.AppletViewerPanel
> + fields applet, documentURL, baseURL and methods run and runLoader. Addapted messge
> + * configure.ac: call to IT_CHECK_FOR_APPLETVIEWERPANEL_HOLE replaced by call
> + to IT_CHECK_FOR_SUN_APPLET_ACCESSIBILITY
> + * /netx/net/sourceforge/jnlp/NetxPanel.java: now extends AppletViewerPanelAccess
> + instead of AppletViewerPanel directly. Access to baseURL, applet and documentURL
> + replaced by dedicated getters/setters
> + * netx/sun/applet/AppletViewerPanelAccess.java: new class extending AppletViewerPanel
> + and enabling access to applet, documentURL and baseURL. Backed by reflection.
> + Also overriding run by usage of short copypasted code.
> + * netx/sun/applet/package-info.java: new file with worning about usage of this
> + package in itw
> + * plugin/icedteanp/java/sun/applet/PluginAppletPanelFactory.java: only call
> + to super debug repalced by ITW's debugging call
> + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java: used getters as in
> + NetxPanel
> +
> 2014-05-21 Andrew Azores <aazores at redhat.com>
>
> * AUTHORS: added Lukasz Dracz and Jie Kang
> diff -r 02a18cce94c7 -r 0c7dcde1cfe0 Makefile.am
> --- a/Makefile.am Wed May 21 11:08:18 2014 -0400
> +++ b/Makefile.am Thu May 22 18:30:41 2014 +0200
> @@ -135,7 +135,8 @@
> net.sourceforge.jnlp.controlpanel net.sourceforge.jnlp.event \
> net.sourceforge.jnlp.runtime net.sourceforge.jnlp.security \
> net.sourceforge.jnlp.security.viewer net.sourceforge.jnlp.services \
> - net.sourceforge.jnlp.tools net.sourceforge.jnlp.util
> + net.sourceforge.jnlp.tools net.sourceforge.jnlp.util \
> + sun.applet
>
> NETX_EXCLUDE_SRCS=
>
> @@ -502,11 +503,11 @@
> (cd $(NETX_DIR) ; \
> mkdir -p lib ; \
> $(BOOT_DIR)/bin/jar cfm lib/classes.jar \
> - $(abs_top_builddir)/netx.manifest javax/jnlp net ; \
> + $(abs_top_builddir)/netx.manifest javax/jnlp net sun; \
> cp -pPR $(SRC_DIR_LINK) $(NETX_SRCDIR) src; \
> find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \
> cd src ; \
> - $(ZIP) -qr $(NETX_DIR)/lib/src.zip javax net )
> + $(ZIP) -qr $(NETX_DIR)/lib/src.zip javax net sun)
> mkdir -p stamps
> touch $@
>
> @@ -893,9 +894,9 @@
> $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(REPRODUCERS_CLASS_NAMES) stamps/process-custom-reproducers.stamp
> cd $(TEST_EXTENSIONS_DIR) ; \
> class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
> - CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR):$(TEST_EXTENSIONS_SRCDIR) \
> + CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR):$(TEST_EXTENSIONS_SRCDIR) ; \
> $(BOOT_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
> - -Xbootclasspath:$(RUNTIME) CommandLine $$class_names
> + -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names
> if WITH_XSLTPROC
> -$(XSLTPROC) --stringparam logs logs_reproducers.html $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/jreport.xsl $(TEST_EXTENSIONS_DIR)/tests-output.xml > $(TESTS_DIR)/index_reproducers.html
> -$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/logs.xsl $(TEST_EXTENSIONS_DIR)/ServerAccess-logs.xml > $(TESTS_DIR)/logs_reproducers.html
> @@ -1072,8 +1073,8 @@
> done ; \
> cd $(NETX_UNIT_TEST_DIR) ; \
> class_names=`cat $(UNIT_CLASS_NAMES)` ; \
> - CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR):$(TAGSOUP_JAR) \
> - $(BOOT_DIR)/bin/java -Xbootclasspath:$(RUNTIME) CommandLine $$class_names
> + CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR):$(TAGSOUP_JAR) ; \
> + $(BOOT_DIR)/bin/java -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names
> if WITH_XSLTPROC
> -$(XSLTPROC) --stringparam logs logs_unit.html $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/jreport.xsl $(NETX_UNIT_TEST_DIR)/tests-output.xml > $(TESTS_DIR)/index_unit.html
> -$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/logs.xsl $(NETX_UNIT_TEST_DIR)/ServerAccess-logs.xml > $(TESTS_DIR)/logs_unit.html
> @@ -1093,7 +1094,8 @@
> mv $(NETX_UNIT_TEST_DIR)/$$file $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
> done ;\
> class_names=`cat $(UNIT_CLASS_NAMES)` ; \
> - $(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -Xbootclasspath:$(RUNTIME) -cp $(EMMA_JAR) -Demma.report.html.out.encoding=UTF-8 emmarun \
> + CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR) ; \
> + $(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH -cp $(EMMA_JAR) -Demma.report.html.out.encoding=UTF-8 emmarun \
> -Dreport.html.out.encoding=UTF-8 \
> -raw \
> -sp $(NETX_SRCDIR) \
> @@ -1157,8 +1159,8 @@
> mv $(NETX_UNIT_TEST_DIR)/$$file $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
> done ;\
> class_names=`cat $(UNIT_CLASS_NAMES)` ; \
> - CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):$(JACOCO_CLASSPATH):.:$(TEST_EXTENSIONS_SRCDIR):$(TAGSOUP_JAR) \
> - $(BOOT_DIR)/bin/java $(JACOCO_AGENT_SWITCH) -Xbootclasspath:$(RUNTIME) CommandLine $$class_names ; \
> + CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):$(JACOCO_CLASSPATH):.:$(TEST_EXTENSIONS_SRCDIR):$(TAGSOUP_JAR) ; \
> + $(BOOT_DIR)/bin/java $(JACOCO_AGENT_SWITCH) -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names ; \
> for file in $(EMMA_MODIFIED_FILES) ; do \
> mv $(NETX_UNIT_TEST_DIR)/$$file $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_SUFFIX)" ; \
> mv $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" $(NETX_UNIT_TEST_DIR)/$$file ; \
> @@ -1214,10 +1216,11 @@
> done ; \
> cd $(TEST_EXTENSIONS_DIR) ; \
> class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
> + CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR) ; \
> $(BOOT_DIR)/bin/java \
> $(EMMA_JAVA_ARGS) \
> $(REPRODUCERS_DPARAMETERS) \
> - -Xbootclasspath:$(RUNTIME) -cp $(EMMA_JAR) emmarun \
> + -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH -cp $(EMMA_JAR) emmarun \
> -raw \
> -cp $(NETX_DIR)/lib/classes.jar \
> -cp $(JUNIT_JAR) \
> @@ -1331,9 +1334,9 @@
> done ; \
> cd $(TEST_EXTENSIONS_DIR) ; \
> class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
> - CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_DIR):$(JACOCO_CLASSPATH):$(TEST_EXTENSIONS_TESTS_DIR):$(TEST_EXTENSIONS_SRCDIR) \
> + CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_DIR):$(JACOCO_CLASSPATH):$(TEST_EXTENSIONS_TESTS_DIR):$(TEST_EXTENSIONS_SRCDIR) ; \
> $(BOOT_DIR)/bin/java $(JACOCO_AGENT_SWITCH) $(REPRODUCERS_DPARAMETERS) \
> - -Xbootclasspath:$(RUNTIME) CommandLine $$class_names ; \
> + -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names ; \
> if [ -f $(JACOCO_JAVAWS_RESULTS) ] ; then \
> jacoco_javaws_results=$(JACOCO_JAVAWS_RESULTS) ; \
> $(JACOCO_OPERATOR_EXEC) \
> @@ -1440,16 +1443,16 @@
> run-test-server-on-44321: stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \
> stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp
> cd $(TEST_EXTENSIONS_DIR) ; \
> - CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR) \
> + CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR) ; \
> $(BOOT_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
> - -Xbootclasspath:$(RUNTIME) net.sourceforge.jnlp.ServerAccess
> + -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH net.sourceforge.jnlp.ServerAccess
>
> run-test-server-on-random-port: stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \
> stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp
> cd $(TEST_EXTENSIONS_DIR) ; \
> - CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR) \
> + CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR) ; \
> $(BOOT_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
> - -Xbootclasspath:$(RUNTIME) net.sourceforge.jnlp.ServerAccess randomport
> + -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH net.sourceforge.jnlp.ServerAccess randomport
>
> clean-netx-tests: clean-netx-unit-tests clean-junit-runner clean-netx-dist-tests clean-test-code-coverage-jacoco clean-test-code-coverage
> if [ -e $(TESTS_DIR)/netx ]; then \
> diff -r 02a18cce94c7 -r 0c7dcde1cfe0 acinclude.m4
> --- a/acinclude.m4 Wed May 21 11:08:18 2014 -0400
> +++ b/acinclude.m4 Thu May 22 18:30:41 2014 +0200
> @@ -868,38 +868,29 @@
> dnl Checks that sun.applet.AppletViewerPanel is available
> dnl and public (via the patch in IcedTea6, applet_hole.patch)
> dnl Can be removed when that is upstream or unneeded
> -AC_DEFUN([IT_CHECK_FOR_APPLETVIEWERPANEL_HOLE],[
> +AC_DEFUN([IT_CHECK_FOR_SUN_APPLET_ACCESSIBILITY],[
> AC_REQUIRE([IT_FIND_JAVAC])
> AC_REQUIRE([IT_FIND_JAVA])
> -AC_CACHE_CHECK([if sun.applet.AppletViewerPanel is available and public], it_cv_applet_hole, [
> +AC_CACHE_CHECK([if selected classes, fields and methods from sun.applet are accessible via reflection], it_cv_applet_hole, [
> CLASS=TestAppletViewer.java
> BYTECODE=$(echo $CLASS|sed 's#\.java##')
> mkdir -p tmp.$$
> cd tmp.$$
> cat << \EOF > $CLASS
> [/* [#]line __oline__ "configure" */
> -import java.lang.reflect.Modifier;
> +import java.lang.reflect.*;
>
> public class TestAppletViewer
> {
> - public static void main(String[] args)
> + public static void main(String[] args) throws Exception
> {
> - try
> - {
> - Class<?> clazz = Class.forName("sun.applet.AppletViewerPanel");
> - if (Modifier.isPublic(clazz.getModifiers()))
> - {
> - System.err.println("Found public sun.applet.AppletViewerPanel");
> - System.exit(0);
> - }
> - System.err.println("Found non-public sun.applet.AppletViewerPanel");
> - System.exit(2);
> - }
> - catch (ClassNotFoundException e)
> - {
> - System.err.println("Could not find sun.applet.AppletViewerPanel");
> - System.exit(1);
> - }
> + Class<?> ap = Class.forName("sun.applet.AppletPanel");
> + Class<?> avp = Class.forName("sun.applet.AppletViewerPanel");
> + Field f1 = ap.getDeclaredField("applet");
> + Field f2 = avp.getDeclaredField("documentURL");
> + Method m1 = ap.getDeclaredMethod("run");
> + Method m2 = ap.getDeclaredMethod("runLoader");
> + Field f3 = avp.getDeclaredField("baseURL");
> }
> }
> ]
> @@ -908,21 +899,17 @@
> if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
> it_cv_applet_hole=yes;
> else
> - it_cv_applet_hole=$?;
> + it_cv_applet_hole=no;
> fi
> else
> - it_cv_applet_hole=3;
> + it_cv_applet_hole=no;
> fi
> ])
> rm -f $CLASS *.class
> cd ..
> rmdir tmp.$$
> -if test x"${it_cv_applet_hole}" = "x1"; then
> - AC_MSG_ERROR([sun.applet.AppletViewerPanel is not available.])
> -elif test x"${it_cv_applet_hole}" = "x2"; then
> - AC_MSG_ERROR([sun.applet.AppletViewerPanel is not public.])
> -elif test x"${it_cv_applet_hole}" = "x3"; then
> - AC_MSG_ERROR([Compilation failed. See config.log.])
> +if test x"${it_cv_applet_hole}" = "xno"; then
> + AC_MSG_ERROR([Some of the checked items is not avaiable. Check logs.])
> fi
> AC_PROVIDE([$0])dnl
> ])
> diff -r 02a18cce94c7 -r 0c7dcde1cfe0 configure.ac
> --- a/configure.ac Wed May 21 11:08:18 2014 -0400
> +++ b/configure.ac Thu May 22 18:30:41 2014 +0200
> @@ -86,7 +86,7 @@
> IT_CHECK_FOR_CLASS(SUN_MISC_REF, [sun.misc.Ref])
> IT_CHECK_FOR_CLASS(COM_SUN_JNDI_TOOLKIT_URL_URLUTIL, [com.sun.jndi.toolkit.url.UrlUtil])
> IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETIMAGEREF, [sun.applet.AppletImageRef])
> -IT_CHECK_FOR_APPLETVIEWERPANEL_HOLE
> +IT_CHECK_FOR_SUN_APPLET_ACCESSIBILITY
> IT_CHECK_GLIB_VERSION
> IT_CHECK_XULRUNNER_MIMEDESCRIPTION_CONSTCHAR
> IT_CHECK_XULRUNNER_REQUIRES_C11
> diff -r 02a18cce94c7 -r 0c7dcde1cfe0 netx/net/sourceforge/jnlp/NetxPanel.java
> --- a/netx/net/sourceforge/jnlp/NetxPanel.java Wed May 21 11:08:18 2014 -0400
> +++ b/netx/net/sourceforge/jnlp/NetxPanel.java Thu May 22 18:30:41 2014 +0200
> @@ -35,7 +35,7 @@
> import net.sourceforge.jnlp.splashscreen.SplashUtils;
> import net.sourceforge.jnlp.util.logging.OutputController;
>
> -import sun.applet.AppletViewerPanel;
> +import sun.applet.AppletViewerPanelAccess;
> import sun.awt.SunToolkit;
>
> /**
> @@ -44,7 +44,7 @@
> *
> * @author Francis Kung <fkung at redhat.com>
> */
> -public class NetxPanel extends AppletViewerPanel implements SplashController {
> +public class NetxPanel extends AppletViewerPanelAccess implements SplashController {
> private final PluginParameters parameters;
> private PluginBridge bridge = null;
> private AppletInstance appInst = null;
> @@ -76,7 +76,7 @@
> String uniqueKey = params.getUniqueKey(getCodeBase());
> synchronized(TGMapMutex) {
> if (!uKeyToTG.containsKey(uniqueKey)) {
> - ThreadGroup tg = new ThreadGroup(Launcher.mainGroup, this.documentURL.toString());
> + ThreadGroup tg = new ThreadGroup(Launcher.mainGroup, this.getDocumentURL().toString());
> uKeyToTG.put(uniqueKey, tg);
> }
> }
> @@ -95,10 +95,10 @@
> //Overriding to use Netx classloader. You might need to relax visibility
> //in sun.applet.AppletPanel for runLoader().
> @Override
> - protected void runLoader() {
> + protected void ourRunLoader() {
>
> try {
> - bridge = new PluginBridge(baseURL,
> + bridge = new PluginBridge(getBaseURL(),
> getDocumentBase(),
> getJarFiles(),
> getCode(),
> @@ -114,13 +114,13 @@
>
> // May throw LaunchException:
> appInst = (AppletInstance) l.launch(bridge, this);
> - applet = appInst.getApplet();
> + setApplet(appInst.getApplet());
>
> - if (applet != null) {
> + if (getApplet() != null) {
> // Stick it in the frame
> - applet.setStub(this);
> - applet.setVisible(false);
> - add("Center", applet);
> + getApplet().setStub(this);
> + getApplet().setVisible(false);
> + add("Center", getApplet());
> showAppletStatus("loaded");
> validate();
> }
> @@ -157,7 +157,7 @@
> }
> }
>
> - handler = new Thread(getThreadGroup(), this, "NetxPanelThread@" + this.documentURL);
> + handler = new Thread(getThreadGroup(), this, "NetxPanelThread@" + this.getDocumentURL());
> handler.start();
> }
>
> @@ -213,5 +213,5 @@
> public int getSplashHeigth() {
> return splashController.getSplashHeigth();
> }
> -
> +
> }
> diff -r 02a18cce94c7 -r 0c7dcde1cfe0 netx/sun/applet/AppletViewerPanelAccess.java
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/netx/sun/applet/AppletViewerPanelAccess.java Thu May 22 18:30:41 2014 +0200
> @@ -0,0 +1,122 @@
> +/* package-info.java
> + Copyright (C) 2014 Red Hat, Inc.
> +
> + This file is part of IcedTea.
> +
> + IcedTea is free software; you can redistribute it and/or modify it under the
> + terms of the GNU General Public License as published by the Free Software
> + Foundation, version 2.
> +
> + IcedTea is distributed in the hope that it will be useful, but WITHOUT ANY
> + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
> + PARTICULAR PURPOSE. See the GNU General Public License for more details.
> +
> + You should have received a copy of the GNU General Public License along with
> + IcedTea; see the file COPYING. If not, write to the
> + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> + 02110-1301 USA.
> +
> + Linking this library statically or dynamically with other modules is making a
> + combined work based on this library. Thus, the terms and conditions of the GNU
> + General Public License cover the whole combination.
> +
> + As a special exception, the copyright holders of this library give you
> + permission to link this library with independent modules to produce an
> + executable, regardless of the license terms of these independent modules, and
> + to copy and distribute the resulting executable under terms of your choice,
> + provided that you also meet, for each linked independent module, the terms and
> + conditions of the license of that module. An independent module is a module
> + which is not derived from or based on this library. If you modify this library,
> + you may extend this exception to your version of the library, but you are not
> + obligated to do so. If you do not wish to do so, delete this exception
> + statement from your version.*/
> +package sun.applet;
> +
> +import java.applet.Applet;
> +import java.lang.reflect.Field;
> +import java.lang.reflect.InvocationTargetException;
> +import java.lang.reflect.Method;
> +import java.net.URL;
> +import java.util.Hashtable;
> +
> +public abstract class AppletViewerPanelAccess extends AppletViewerPanel {
> +
> + public AppletViewerPanelAccess(URL documentURL, Hashtable<String, String> atts) {
> + super(documentURL, atts);
> + }
> +
> + protected URL getDocumentURL() {
> + try {
> + Field field = AppletViewerPanel.class.getDeclaredField("documentURL");
> + field.setAccessible(true);
> + return (URL) field.get(this);
> + } catch (IllegalAccessException | IllegalArgumentException | NoSuchFieldException | SecurityException ex) {
> + throw new RuntimeException(ex);
> + }
> + }
> +
> + protected void setApplet(Applet iapplet) {
> + try {
> + Field field = AppletPanel.class.getDeclaredField("applet");
> + field.setAccessible(true);
> + field.set(this, iapplet);
> + } catch (IllegalAccessException | IllegalArgumentException | NoSuchFieldException | SecurityException ex) {
> + throw new RuntimeException(ex);
> + }
> + }
> +
> + @Override
> + public void run() {
> + // this is copypasted chunk from AppletPanel.run (the only current
> + // call of runLoader). Pray it do not change
> + Thread curThread = Thread.currentThread();
> + if (curThread == loaderThread) {
> + ourRunLoader();
> + return;
> + }
> +
> + super.run();
> + }
> +
> + /**
> + * NOTE. We cannot override private method, and this call is unused and useless.
> + * But kept for record of troubles to run on any openjdk.
> + * upstream patch posted http://mail.openjdk.java.net/pipermail/awt-dev/2014-May/007828.html
> + */
> + private void superRunLoader() {
> + try {
> + Class klazz = AppletPanel.class;
> + Method runLoaderMethod = klazz.getDeclaredMethod("runLoader");
> + runLoaderMethod.setAccessible(true);
> + runLoaderMethod.invoke(getApplet());
> + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException ex) {
> + throw new RuntimeException(ex);
> + }
> + }
> +
> +
> + protected URL getBaseURL() {
> + try {
> + Field field = AppletViewerPanel.class
> + .getDeclaredField("baseURL");
> + field.setAccessible(
> + true);
> + return (URL) field.get(
> + this);
> + } catch (IllegalAccessException | IllegalArgumentException | NoSuchFieldException | SecurityException ex) {
> + throw new RuntimeException(ex);
> + }
> +
> + }
> +
> + @Override
> + //remaining stub of unpatched jdk
> + protected synchronized void createAppletThread() {
> + throw new RuntimeException("Not yet implemented");
> + //no need to call super, is overriden, and not used in upstream
> + //AppletViewerPanel or AppletPanel
> + }
> +
> + abstract protected void ourRunLoader();
> +
> +}
> diff -r 02a18cce94c7 -r 0c7dcde1cfe0 netx/sun/applet/package-info.java
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/netx/sun/applet/package-info.java Thu May 22 18:30:41 2014 +0200
> @@ -0,0 +1,37 @@
> +/* package-info.java
> + Copyright (C) 2014 Red Hat, Inc.
> +
> +This file is part of IcedTea.
> +
> +IcedTea is free software; you can redistribute it and/or modify it under the
> +terms of the GNU General Public License as published by the Free Software
> +Foundation, version 2.
> +
> +IcedTea is distributed in the hope that it will be useful, but WITHOUT ANY
> +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
> +PARTICULAR PURPOSE. See the GNU General Public License for more details.
> +
> +You should have received a copy of the GNU General Public License along with
> +IcedTea; see the file COPYING. If not, write to the
> +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> +02110-1301 USA.
> +
> +Linking this library statically or dynamically with other modules is making a
> +combined work based on this library. Thus, the terms and conditions of the GNU
> +General Public License cover the whole combination.
> +
> +As a special exception, the copyright holders of this library give you
> +permission to link this library with independent modules to produce an
> +executable, regardless of the license terms of these independent modules, and
>
More information about the distro-pkg-dev
mailing list