[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