Bug 180541 - [PATCH] java/openjdk6 (add IcedTea6 patch S8005615 to fix Java Logger fails to load tomcat logger implementation (JULI))
Summary: [PATCH] java/openjdk6 (add IcedTea6 patch S8005615 to fix Java Logger fails t...
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-java (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-13 21:40 UTC by Matthias Petermann
Modified: 2013-07-16 22:28 UTC (History)
0 users

See Also:


Attachments
file.diff (25.94 KB, patch)
2013-07-13 21:40 UTC, Matthias Petermann
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Matthias Petermann 2013-07-13 21:40:00 UTC
Problem Description
===================

Using Tomcat 7.0.x on OpenJDK 6 b27_3 showed up an incident related to logging. The Java Logger fails to load tomcat logger implementation (JULI). This results in Exceptions like:

  Can't load log handler "1catalina.org.apache.juli.FileHandler"
  java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler 

in catalina.out.

This symptom was reported under PR177067 [1] already. A discussion was held on tomcat-users[2]. The problem was confirmed[3] as a bug related to IcedTea. It was fixed with patch S8005615 in IcedTea 1.11.7 / 1.12.2.

Fix
===

The attached patch adds the following file as a patch to openjdk6:

  8005615-failure_to_load_logger_implementation.patch

It also increases the port revision and fixes a minor issue which portlint -AC reported (extra whitespace in header).

The original file is from:

  http://icedtea.classpath.org/download/source/icedtea6-1.12.2.tar.gz

The imported copy is unmodified, except the leading "openjdk/" was removed from the diff marks.


References
==========

Original bug:

[1] PR177067: http://www.freebsd.org/cgi/query-pr.cgi?pr=177067&cat=

Tomcat Users Thread:

[2] http://marc.info/?l=tomcat-user&m=137373874903137&w=2

RedHat Bugzilla Thread:

[3] https://bugzilla.redhat.com/show_bug.cgi?id=907344

Fix: See full description (patch attached)

Patch attached with submission follows:
How-To-Repeat: * Install OpenJDK 6 from ports
* Install Tomcat 7 from ports (or from .tar.gz)
* Start Tomcat
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2013-07-13 21:40:10 UTC
Responsible Changed
From-To: freebsd-ports-bugs->freebsd-java

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 dfilter service freebsd_committer freebsd_triage 2013-07-16 22:07:35 UTC
Author: jkim
Date: Tue Jul 16 21:07:25 2013
New Revision: 323126
URL: http://svnweb.freebsd.org/changeset/ports/323126

Log:
  Add multiple security patches and improvements from IcedTea6 1.12.6.
  
  http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2013-July/023941.html
  
  Obtained from:	IcedTea Project
  PR:		ports/180541

Added:
  head/java/openjdk6/Makefile.icedtea   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6469266-xmlsec_1.4.2.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6786028-wcag_bold_tags.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6786682-wcag_lang.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6786688-wcag_table.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6786690-wcag_dl.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6802694-no_deprecated.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6851834-handle_renames.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6888167-medialib_memory_leaks.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6961178-doclet_xml.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/7006270-regressions.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/7195301-no_instanceof_node.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8005615-failure_to_load_logger_implementation.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8007393.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8007611.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/
  head/java/openjdk6/files/icedtea/security/20130618/6741606-apache_santuario.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/7158805-nested_subroutine_rewriting.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/7170730-windows_network_stack.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8000638-improve_deserialization.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8000642-better_transportation_handling.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8001032-restrict_object_access-corba.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8001033-refactor_address_handling.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8001034-memory_management.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8001038-resourcefully_handle_resources.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8001043-clarify_definition_restrictions.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8001309-better_handling_of_annotation_interfaces.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8001318-6_fixup.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8001318-socket_getlocaladdress_consistency.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8001330-checking_order_improvement.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8001330-improve_checking_order.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8003703-update_rmi_connection_dialog.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8004584-augment_applet_contextualization.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8005007-better_glyph_processing.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8006328-6_fixup.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8006328-sound_class_robustness.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8006611-improve_scripting.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8007467-improve_jmx_internal_api_robustness.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8007471-6_fixup.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8007471-improve_mbean_notifications.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8007812-getenclosingmethod.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008120-improve_jmx_class_checking.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008124-better_compliance_testing.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008128-better_jmx_api_coherence.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008132-better_serialization.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008585-jmx_data_handling.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008593-better_urlclassloader.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008603-jmx_provider_provision.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008611-6_fixup.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008611-jmx_annotations.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008615-jmx_internal_api_robustness.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008623-mbeanserver_handling.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008744-6741606_rework.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8008982-jmx_interface_changes.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8009004-rmi_connection_improvement.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8009013-t2k_glyphs.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8009034-jmx_notification_improvement.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8009038-jmx_notification_support_improvement.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8009067-improve_key_storing.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8009071-improve_shape_handling.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8009235-improve_tsa_data_handling.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8011243-improve_imaginglib.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8011248-better_component_rasters.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8011253-better_short_component_rasters.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8011257-better_byte_component_rasters.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8011557-improve_reflection.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8012375-javadoc_framing.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8012421-better_positioning.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8012438-better_image_validation.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8012597-better_image_channel_validation.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8012601-better_layout_validation.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8014281-better_xml_signature_checking.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/8015997-more_javadoc_framing.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/diamond_fix.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/handle_npe.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/javac_issue.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/langtools_generics.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/langtools_merge-01.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/langtools_merge-02.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/security/20130618/langtools_merge-03.patch   (contents, props changed)
Modified:
  head/java/openjdk6/Makefile

Modified: head/java/openjdk6/Makefile
==============================================================================
--- head/java/openjdk6/Makefile	Tue Jul 16 20:35:20 2013	(r323125)
+++ head/java/openjdk6/Makefile	Tue Jul 16 21:07:25 2013	(r323126)
@@ -3,7 +3,7 @@
 
 PORTNAME=	openjdk6
 PORTVERSION=	b27
-PORTREVISION?=	3
+PORTREVISION?=	4
 CATEGORIES=	java devel
 MASTER_SITES=	http://download.java.net/openjdk/jdk6/promoted/${PORTVERSION}/ \
 		http://download.java.net/jaxp/openjdk/jdk6/:jaxp \
@@ -39,84 +39,6 @@ RUN_DEPENDS=	javavm:${PORTSDIR}/java/jav
 
 OPENJDK_BUILDDATE=	26_oct_2012
 
-EXTRA_PATCHES=	${FILESDIR}/icedtea/jaxp.patch \
-		${FILESDIR}/icedtea/jaxws.patch \
-		${FILESDIR}/icedtea/security/20120830/7182135-impossible_to_use_some_editors_directly.patch \
-		${FILESDIR}/icedtea/security/20130201/7201068.patch \
-		${FILESDIR}/icedtea/security/20130201/6563318.patch \
-		${FILESDIR}/icedtea/security/20130201/6664509.patch \
-		${FILESDIR}/icedtea/security/20130201/6776941.patch \
-		${FILESDIR}/icedtea/security/20130201/7141694.patch \
-		${FILESDIR}/icedtea/security/20130201/7173145.patch \
-		${FILESDIR}/icedtea/security/20130201/7186945.patch \
-		${FILESDIR}/icedtea/security/20130201/7186948.patch \
-		${FILESDIR}/icedtea/security/20130201/7186952.patch \
-		${FILESDIR}/icedtea/security/20130201/7186954.patch \
-		${FILESDIR}/icedtea/security/20130201/7192392.patch \
-		${FILESDIR}/icedtea/security/20130201/7192393.patch \
-		${FILESDIR}/icedtea/security/20130201/7192977.patch \
-		${FILESDIR}/icedtea/security/20130201/7197546.patch \
-		${FILESDIR}/icedtea/security/20130201/7200491.patch \
-		${FILESDIR}/icedtea/security/20130201/7200500.patch \
-		${FILESDIR}/icedtea/security/20130201/7201064.patch \
-		${FILESDIR}/icedtea/security/20130201/7201066.patch \
-		${FILESDIR}/icedtea/security/20130201/7201070.patch \
-		${FILESDIR}/icedtea/security/20130201/7201071.patch \
-		${FILESDIR}/icedtea/security/20130201/8000210.patch \
-		${FILESDIR}/icedtea/security/20130201/8000537.patch \
-		${FILESDIR}/icedtea/security/20130201/8000540.patch \
-		${FILESDIR}/icedtea/security/20130201/8000631.patch \
-		${FILESDIR}/icedtea/security/20130201/8001242.patch \
-		${FILESDIR}/icedtea/security/20130201/8001307.patch \
-		${FILESDIR}/icedtea/security/20130201/8001972.patch \
-		${FILESDIR}/icedtea/security/20130201/8002325.patch \
-		${FILESDIR}/icedtea/security/20130219/8006446.patch \
-		${FILESDIR}/icedtea/security/20130219/8006777.patch \
-		${FILESDIR}/icedtea/security/20130219/8007688.patch \
-		${FILESDIR}/icedtea/security/20130304/8007014.patch \
-		${FILESDIR}/icedtea/security/20130304/8007675.patch \
-		${FILESDIR}/icedtea/openjdk/7036559-concurrenthashmap_improvements.patch \
-		${FILESDIR}/icedtea/security/20130416/8009063.patch \
-		${FILESDIR}/icedtea/openjdk/8004302-soap_test_failure.patch \
-		${FILESDIR}/icedtea/security/20130416/6657673.patch \
-		${FILESDIR}/icedtea/security/20130416/6657673-fixup.patch \
-		${FILESDIR}/icedtea/openjdk/7133220-factory_finder_parser_transform_useBSClassLoader.patch \
-		${FILESDIR}/icedtea/security/20130416/6657673-factory_finder.patch \
-		${FILESDIR}/icedtea/openjdk/6669869-queries_per_appcontext.patch \
-		${FILESDIR}/icedtea/openjdk/5102804-memory_leak.patch \
-		${FILESDIR}/icedtea/openjdk/6963811-deadlock_fix.patch \
-		${FILESDIR}/icedtea/openjdk/7064279-resource_release.patch \
-		${FILESDIR}/icedtea/openjdk/7064279-fixup.patch \
-		${FILESDIR}/icedtea/security/20130416/7200507.patch \
-		${FILESDIR}/icedtea/security/20130416/8000724.patch \
-		${FILESDIR}/icedtea/security/20130416/8004986.patch \
-		${FILESDIR}/icedtea/openjdk/6501644-icu_sync.patch \
-		${FILESDIR}/icedtea/openjdk/6886358-layout_update.patch \
-		${FILESDIR}/icedtea/security/20130416/8001031.patch \
-		${FILESDIR}/icedtea/openjdk/7017324-kerning_crash.patch \
-		${FILESDIR}/icedtea/security/20130416/8001040.patch \
-		${FILESDIR}/icedtea/security/20130416/8001322.patch \
-		${FILESDIR}/icedtea/security/20130416/8001329.patch \
-		${FILESDIR}/icedtea/security/20130416/8003335.patch \
-		${FILESDIR}/icedtea/security/20130416/8003445.patch \
-		${FILESDIR}/icedtea/security/20130416/8003543.patch \
-		${FILESDIR}/icedtea/security/20130416/8004261.patch \
-		${FILESDIR}/icedtea/security/20130416/8004336.patch \
-		${FILESDIR}/icedtea/security/20130416/8005432.patch \
-		${FILESDIR}/icedtea/security/20130416/8005943.patch \
-		${FILESDIR}/icedtea/security/20130416/8006309.patch \
-		${FILESDIR}/icedtea/security/20130416/8006435.patch \
-		${FILESDIR}/icedtea/security/20130416/8006790.patch \
-		${FILESDIR}/icedtea/security/20130416/8006795.patch \
-		${FILESDIR}/icedtea/security/20130416/8007406.patch \
-		${FILESDIR}/icedtea/security/20130416/8007617.patch \
-		${FILESDIR}/icedtea/security/20130416/8007667.patch \
-		${FILESDIR}/icedtea/security/20130416/8007918.patch \
-		${FILESDIR}/icedtea/security/20130416/8009305.patch \
-		${FILESDIR}/icedtea/security/20130416/8009699.patch \
-		${FILESDIR}/icedtea/security/20130416/8009814.patch \
-		${FILESDIR}/icedtea/security/20130416/8009857.patch
-
 OPTIONS_DEFINE=	ICEDTEA IPV6 POLICY SOUND TZUPDATE
 OPTIONS_DEFAULT=ICEDTEA IPV6 TZUPDATE
 ICEDTEA_DESC=	Apply additional patches from IcedTea
@@ -134,6 +56,9 @@ TEST_DESC=	Add support for running regre
 USES=		gmake motif
 
 .include <bsd.port.options.mk>
+.include "${.CURDIR}/Makefile.icedtea"
+
+EXTRA_PATCHES=	${ICEDTEA_PATCHES}
 
 # java extracts directly to the cwd
 WRKSRC=		${WRKDIR}
@@ -231,12 +156,6 @@ MAKE_ENV+=	SKIP_FASTDEBUG_BUILD=false
 MAKE_ENV+=	SKIP_FASTDEBUG_BUILD=true
 .endif
 
-.if ${PORT_OPTIONS:MICEDTEA}
-EXTRA_PATCHES+=	${FILESDIR}/icedtea/openjdk/7032388-work_without_cmov_instruction.patch \
-		${FILESDIR}/icedtea/applet_hole.patch \
-		${FILESDIR}/icedtea/jpegclasses.patch
-.endif
-
 .if empty(PORT_OPTIONS:MIPV6)
 MAKE_ENV+=	DONT_ENABLE_IPV6="YES"
 .endif

Added: head/java/openjdk6/Makefile.icedtea
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/java/openjdk6/Makefile.icedtea	Tue Jul 16 21:07:25 2013	(r323126)
@@ -0,0 +1,170 @@
+# $FreeBSD$
+
+_PATCHES= \
+	jaxp.patch \
+	jaxws.patch \
+	security/20120830/7182135-impossible_to_use_some_editors_directly.patch \
+	security/20130201/7201068.patch \
+	security/20130201/6563318.patch \
+	security/20130201/6664509.patch \
+	security/20130201/6776941.patch \
+	security/20130201/7141694.patch \
+	security/20130201/7173145.patch \
+	security/20130201/7186945.patch \
+	security/20130201/7186948.patch \
+	security/20130201/7186952.patch \
+	security/20130201/7186954.patch \
+	security/20130201/7192392.patch \
+	security/20130201/7192393.patch \
+	security/20130201/7192977.patch \
+	security/20130201/7197546.patch \
+	security/20130201/7200491.patch \
+	security/20130201/7200500.patch \
+	security/20130201/7201064.patch \
+	security/20130201/7201066.patch \
+	security/20130201/7201070.patch \
+	security/20130201/7201071.patch \
+	security/20130201/8000210.patch \
+	security/20130201/8000537.patch \
+	security/20130201/8000540.patch \
+	security/20130201/8000631.patch \
+	security/20130201/8001242.patch \
+	security/20130201/8001307.patch \
+	security/20130201/8001972.patch \
+	security/20130201/8002325.patch \
+	security/20130219/8006446.patch \
+	security/20130219/8006777.patch \
+	security/20130219/8007688.patch \
+	security/20130304/8007014.patch \
+	security/20130304/8007675.patch \
+	openjdk/7036559-concurrenthashmap_improvements.patch \
+	security/20130416/8009063.patch \
+	openjdk/8004302-soap_test_failure.patch \
+	security/20130416/6657673.patch \
+	security/20130416/6657673-fixup.patch \
+	openjdk/7133220-factory_finder_parser_transform_useBSClassLoader.patch \
+	security/20130416/6657673-factory_finder.patch \
+	openjdk/6669869-queries_per_appcontext.patch \
+	openjdk/5102804-memory_leak.patch \
+	openjdk/6963811-deadlock_fix.patch \
+	openjdk/7064279-resource_release.patch \
+	openjdk/7064279-fixup.patch \
+	security/20130416/7200507.patch \
+	security/20130416/8000724.patch \
+	security/20130416/8004986.patch \
+	openjdk/6501644-icu_sync.patch \
+	openjdk/6886358-layout_update.patch \
+	security/20130416/8001031.patch \
+	openjdk/7017324-kerning_crash.patch \
+	security/20130416/8001040.patch \
+	security/20130416/8001322.patch \
+	security/20130416/8001329.patch \
+	security/20130416/8003335.patch \
+	security/20130416/8003445.patch \
+	security/20130416/8003543.patch \
+	security/20130416/8004261.patch \
+	security/20130416/8004336.patch \
+	security/20130416/8005432.patch \
+	security/20130416/8005943.patch \
+	security/20130416/8006309.patch \
+	security/20130416/8006435.patch \
+	security/20130416/8006790.patch \
+	security/20130416/8006795.patch \
+	security/20130416/8007406.patch \
+	security/20130416/8007617.patch \
+	security/20130416/8007667.patch \
+	security/20130416/8007918.patch \
+	security/20130416/8009305.patch \
+	security/20130416/8009699.patch \
+	security/20130416/8009814.patch \
+	security/20130416/8009857.patch \
+	openjdk/7195301-no_instanceof_node.patch \
+	openjdk/6469266-xmlsec_1.4.2.patch \
+	security/20130618/6741606-apache_santuario.patch \
+	security/20130618/7170730-windows_network_stack.patch \
+	security/20130618/8000638-improve_deserialization.patch \
+	security/20130618/8001032-restrict_object_access-corba.patch \
+	security/20130618/8001033-refactor_address_handling.patch \
+	security/20130618/8001034-memory_management.patch \
+	security/20130618/8001038-resourcefully_handle_resources.patch \
+	security/20130618/8001043-clarify_definition_restrictions.patch \
+	security/20130618/8001309-better_handling_of_annotation_interfaces.patch \
+	security/20130618/8001318-socket_getlocaladdress_consistency.patch \
+	security/20130618/8001318-6_fixup.patch \
+	security/20130618/8001330-improve_checking_order.patch \
+	security/20130618/8003703-update_rmi_connection_dialog.patch \
+	openjdk/8005615-failure_to_load_logger_implementation.patch \
+	openjdk/8007393.patch \
+	openjdk/8007611.patch \
+	security/20130618/8004584-augment_applet_contextualization.patch \
+	security/20130618/8005007-better_glyph_processing.patch \
+	security/20130618/8006328-sound_class_robustness.patch \
+	security/20130618/8006328-6_fixup.patch \
+	security/20130618/8006611-improve_scripting.patch \
+	security/20130618/8007467-improve_jmx_internal_api_robustness.patch \
+	security/20130618/8007471-improve_mbean_notifications.patch \
+	security/20130618/8007471-6_fixup.patch \
+	security/20130618/8007812-getenclosingmethod.patch \
+	security/20130618/8008120-improve_jmx_class_checking.patch \
+	security/20130618/8008124-better_compliance_testing.patch \
+	security/20130618/8008128-better_jmx_api_coherence.patch \
+	security/20130618/8008132-better_serialization.patch \
+	security/20130618/8008585-jmx_data_handling.patch \
+	security/20130618/8008593-better_urlclassloader.patch \
+	security/20130618/8008603-jmx_provider_provision.patch \
+	security/20130618/8008611-jmx_annotations.patch \
+	security/20130618/8008611-6_fixup.patch \
+	security/20130618/8008615-jmx_internal_api_robustness.patch \
+	security/20130618/8008623-mbeanserver_handling.patch \
+	security/20130618/8008744-6741606_rework.patch \
+	security/20130618/8008982-jmx_interface_changes.patch \
+	security/20130618/8009004-rmi_connection_improvement.patch \
+	security/20130618/8009013-t2k_glyphs.patch \
+	security/20130618/8009034-jmx_notification_improvement.patch \
+	security/20130618/8009038-jmx_notification_support_improvement.patch \
+	security/20130618/8009067-improve_key_storing.patch \
+	security/20130618/8009235-improve_tsa_data_handling.patch \
+	openjdk/6888167-medialib_memory_leaks.patch \
+	security/20130618/8011243-improve_imaginglib.patch \
+	security/20130618/8011248-better_component_rasters.patch \
+	security/20130618/8011253-better_short_component_rasters.patch \
+	security/20130618/8011257-better_byte_component_rasters.patch \
+	security/20130618/8011557-improve_reflection.patch \
+	security/20130618/8012421-better_positioning.patch \
+	security/20130618/8012438-better_image_validation.patch \
+	security/20130618/8012597-better_image_channel_validation.patch \
+	security/20130618/8012601-better_layout_validation.patch \
+	security/20130618/8014281-better_xml_signature_checking.patch \
+	security/20130618/diamond_fix.patch \
+	security/20130618/handle_npe.patch \
+	security/20130618/javac_issue.patch \
+	security/20130618/7158805-nested_subroutine_rewriting.patch \
+	security/20130618/8001330-checking_order_improvement.patch \
+	security/20130618/8000642-better_transportation_handling.patch \
+	openjdk/6786028-wcag_bold_tags.patch \
+	openjdk/6786682-wcag_lang.patch \
+	openjdk/6802694-no_deprecated.patch \
+	openjdk/6786690-wcag_dl.patch \
+	openjdk/6786688-wcag_table.patch \
+	openjdk/6961178-doclet_xml.patch \
+	openjdk/6851834-restructure.patch \
+	openjdk/6851834-handle_renames.patch \
+	openjdk/7006270-regressions.patch \
+	security/20130618/8012375-javadoc_framing.patch \
+	security/20130618/8015997-more_javadoc_framing.patch \
+	security/20130618/langtools_merge-01.patch \
+	security/20130618/langtools_merge-02.patch \
+	security/20130618/langtools_generics.patch \
+	security/20130618/langtools_merge-03.patch \
+	security/20130618/8009071-improve_shape_handling.patch
+
+.if ${PORT_OPTIONS:MICEDTEA}
+_PATCHES+= \
+	openjdk/7032388-work_without_cmov_instruction.patch \
+	applet_hole.patch \
+	jpegclasses.patch
+.endif
+
+.for p in ${_PATCHES}
+ICEDTEA_PATCHES+=	${FILESDIR}/icedtea/${p}
+.endfor

Added: head/java/openjdk6/files/icedtea/openjdk/6469266-xmlsec_1.4.2.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/java/openjdk6/files/icedtea/openjdk/6469266-xmlsec_1.4.2.patch	Tue Jul 16 21:07:25 2013	(r323126)
@@ -0,0 +1,23876 @@
+# HG changeset patch
+# User andrew
+# Date 1371136223 -3600
+# Node ID a955a845f0d1b8e21e0780986d971b3712db26c7
+# Parent  2ae6d8da293f30c94c9478a6634c7a480328c5c5
+6469266: Integrate Apache XMLSec 1.4.2 into JDK 7
+Reviewed-by: valeriep
+
+diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java b/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java
+--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java
++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java
+@@ -20,12 +20,9 @@
+  */
+ package com.sun.org.apache.xml.internal.security;
+ 
+-
+-
+ import java.io.InputStream;
+ import java.security.AccessController;
+ import java.security.PrivilegedAction;
+-
+ import javax.xml.parsers.DocumentBuilder;
+ import javax.xml.parsers.DocumentBuilderFactory;
+ 
+@@ -51,7 +48,7 @@
+  * done by calling {@link Init#init} which should be done in any static block
+  * of the files of this library. We ensure that this call is only executed once.
+  *
+- * @author $Author: raul $
++ * @author $Author: mullan $
+  */
+ public final class Init {
+ 
+@@ -113,20 +110,19 @@
+             dbf.setValidating(false);
+ 
+             DocumentBuilder db = dbf.newDocumentBuilder();
+-
+             // We don't allow users to override the Apache XML Security
+             // configuration in the JRE. Users should use the standard security
+             // provider mechanism instead if implementing their own
+             // transform or canonicalization algorithms.
+-            // String cfile = System.getProperty("com.sun.org.apache.xml.internal.security.resource.config");
+-            // InputStream is =
+-            //     Class.forName("com.sun.org.apache.xml.internal.security.Init")
+-            //     .getResourceAsStream(cfile != null ? cfile : "resource/config.xml");
++            // InputStream is = Class.forName("com.sun.org.apache.xml.internal.security.Init").getResourceAsStream("resource/config.xml");
+             InputStream is = (InputStream) AccessController.doPrivileged(
+                 new PrivilegedAction() {
+                     public Object run() {
++//                        String cfile = System.getProperty
++//                            ("com.sun.org.apache.xml.internal.security.resource.config");
+                         return getClass().getResourceAsStream
+-                                ("resource/config.xml");
++//                            (cfile != null ? cfile : "resource/config.xml");
++                            ("resource/config.xml");
+                     }
+                 });
+ 
+@@ -167,7 +163,7 @@
+ //
+ //            if (tag.equals("ResourceBundles")){
+ //                XX_configure_i18n_start = System.currentTimeMillis();
+-//              Element resource=(Element)el;
++//                Element resource=(Element)el;
+ //               /* configure internationalization */
+ //               Attr langAttr = resource.getAttributeNode("defaultLanguageCode");
+ //               Attr countryAttr = resource.getAttributeNode("defaultCountryCode");
+@@ -202,11 +198,11 @@
+ 
+                         if (currMeth.getDeclaringClass().getName()
+                                 .equals(JAVACLASS)) {
+-                           log.log(java.util.logging.Level.FINE, currMeth.getDeclaringClass().toString());
++                           log.log(java.util.logging.Level.FINE, currMeth.getDe claringClass().toString());
+                         }
+                      }*/
+-                      if (true)
+-                        if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Canonicalizer.register(" + URI + ", "
++                      if (log.isLoggable(java.util.logging.Level.FINE))
++                        log.log(java.util.logging.Level.FINE, "Canonicalizer.register(" + URI + ", "
+                             + JAVACLASS + ")");
+                      Canonicalizer.register(URI, JAVACLASS);
+                   } catch (ClassNotFoundException e) {
+@@ -233,9 +229,8 @@
+                         "JAVACLASS");
+                   try {
+                      Class.forName(JAVACLASS);
+-                     if (true)
+-                        if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Transform.register(" + URI + ", " + JAVACLASS
+-                            + ")");
++                     if (log.isLoggable(java.util.logging.Level.FINE))
++                        log.log(java.util.logging.Level.FINE, "Transform.register(" + URI + ", " + JAVACLASS + ")");
+                      Transform.register(URI, JAVACLASS);
+                   } catch (ClassNotFoundException e) {
+                      Object exArgs[] = { URI, JAVACLASS };
+@@ -284,12 +279,11 @@
+ //
+ //                        if (currMeth.getDeclaringClass().getName()
+ //                                .equals(JAVACLASS)) {
+-//                           log.log(java.util.logging.Level.FINE, currMeth.getDeclaringClass().toString());
++//                           log.log(java.util.logging.Level.FINE, currMeth.getDe claringClass().toString());
+ //                        }
+ //                     }
+-                      if (true)
+-                        if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "SignatureAlgorithm.register(" + URI + ", "
+-                            + JAVACLASS + ")");
++                      if (log.isLoggable(java.util.logging.Level.FINE))
++                        log.log(java.util.logging.Level.FINE, "SignatureAlgorithm.register(" + URI + ", " + JAVACLASS + ")");
+                      SignatureAlgorithm.register(URI, JAVACLASS);
+                   } catch (ClassNotFoundException e) {
+                      Object exArgs[] = { URI, JAVACLASS };
+@@ -320,13 +314,11 @@
+                         "DESCRIPTION");
+ 
+                   if ((Description != null) && (Description.length() > 0)) {
+-                    if (true)
+-                        if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": "
+-                               + Description);
++                    if (log.isLoggable(java.util.logging.Level.FINE))
++                        log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": " + Description);
+                   } else {
+-                    if (true)
+-                        if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS
+-                               + ": For unknown purposes");
++                    if (log.isLoggable(java.util.logging.Level.FINE))
++                        log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": For unknown purposes");
+                   }
+                                   try {
+                                           ResourceResolver.register(JAVACLASS);
+@@ -359,13 +351,11 @@
+                         "DESCRIPTION");
+ 
+                   if ((Description != null) && (Description.length() > 0)) {
+-                    if (true)
+-                        if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": "
+-                               + Description);
++                    if (log.isLoggable(java.util.logging.Level.FINE))
++                        log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": " + Description);
+                   } else {
+-                    if (true)
+-                        if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS
+-                               + ": For unknown purposes");
++                    if (log.isLoggable(java.util.logging.Level.FINE))
++                        log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": For unknown purposes");
+                   }
+ 
+                   KeyResolver.register(JAVACLASS);
+@@ -376,8 +366,8 @@
+ 
+             if (tag.equals("PrefixMappings")){
+                 XX_configure_reg_prefixes_start = System.currentTimeMillis();
+-                if (true)
+-                        if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Now I try to bind prefixes:");
++                if (log.isLoggable(java.util.logging.Level.FINE))
++                    log.log(java.util.logging.Level.FINE, "Now I try to bind prefixes:");
+ 
+                Element[] nl = XMLUtils.selectNodes(el.getFirstChild(), CONF_NS,"PrefixMapping");
+ 
+@@ -386,8 +376,8 @@
+                                         "namespace");
+                   String prefix = nl[i].getAttributeNS(null,
+                                      "prefix");
+-                  if (true)
+-                        if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Now I try to bind " + prefix + " to " + namespace);
++                  if (log.isLoggable(java.util.logging.Level.FINE))
++                      log.log(java.util.logging.Level.FINE, "Now I try to bind " + prefix + " to " + namespace);
+                   com.sun.org.apache.xml.internal.security.utils.ElementProxy
+                      .setDefaultPrefix(namespace, prefix);
+                }
+@@ -398,19 +388,19 @@
+             long XX_init_end = System.currentTimeMillis();
+ 
+             //J-
+-            if (true) {
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "XX_init                             " + ((int)(XX_init_end - XX_init_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_prng                           " + ((int)(XX_prng_end - XX_prng_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_parsing                        " + ((int)(XX_parsing_end - XX_parsing_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_configure_i18n                 " + ((int)(XX_configure_i18n_end- XX_configure_i18n_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_configure_reg_c14n             " + ((int)(XX_configure_reg_c14n_end- XX_configure_reg_c14n_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_configure_reg_jcemapper        " + ((int)(XX_configure_reg_jcemapper_end- XX_configure_reg_jcemapper_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_configure_reg_keyInfo          " + ((int)(XX_configure_reg_keyInfo_end- XX_configure_reg_keyInfo_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_configure_reg_keyResolver      " + ((int)(XX_configure_reg_keyResolver_end- XX_configure_reg_keyResolver_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_configure_reg_prefixes         " + ((int)(XX_configure_reg_prefixes_end- XX_configure_reg_prefixes_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_configure_reg_resourceresolver " + ((int)(XX_configure_reg_resourceresolver_end- XX_configure_reg_resourceresolver_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_configure_reg_sigalgos         " + ((int)(XX_configure_reg_sigalgos_end- XX_configure_reg_sigalgos_start)) + " ms");
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "  XX_configure_reg_transforms       " + ((int)(XX_configure_reg_transforms_end- XX_configure_reg_transforms_start)) + " ms");
++            if (log.isLoggable(java.util.logging.Level.FINE)) {
++                log.log(java.util.logging.Level.FINE, "XX_init                             " + ((int)(XX_init_end - XX_init_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_prng                           " + ((int)(XX_prng_end - XX_prng_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_parsing                        " + ((int)(XX_parsing_end - XX_parsing_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_configure_i18n                 " + ((int)(XX_configure_i18n_end- XX_configure_i18n_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_configure_reg_c14n             " + ((int)(XX_configure_reg_c14n_end- XX_configure_reg_c14n_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_configure_reg_jcemapper        " + ((int)(XX_configure_reg_jcemapper_end- XX_configure_reg_jcemapper_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_configure_reg_keyInfo          " + ((int)(XX_configure_reg_keyInfo_end- XX_configure_reg_keyInfo_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_configure_reg_keyResolver      " + ((int)(XX_configure_reg_keyResolver_end- XX_configure_reg_keyResolver_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_configure_reg_prefixes         " + ((int)(XX_configure_reg_prefixes_end- XX_configure_reg_prefixes_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_configure_reg_resourceresolver " + ((int)(XX_configure_reg_resourceresolver_end- XX_configure_reg_resourceresolver_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_configure_reg_sigalgos         " + ((int)(XX_configure_reg_sigalgos_end- XX_configure_reg_sigalgos_start)) + " ms");
++                log.log(java.util.logging.Level.FINE, "  XX_configure_reg_transforms       " + ((int)(XX_configure_reg_transforms_end- XX_configure_reg_transforms_start)) + " ms");
+             }
+          } catch (Exception e) {
+             log.log(java.util.logging.Level.SEVERE, "Bad: ", e);
+diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/Algorithm.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/Algorithm.java
+--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/Algorithm.java
++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/Algorithm.java
+@@ -24,7 +24,7 @@
+ 
+ import com.sun.org.apache.xml.internal.security.exceptions.XMLSecurityException;
+ import com.sun.org.apache.xml.internal.security.utils.Constants;
+-import com.sun.org.apache.xml.internal.security.utils.ElementProxy;
++import com.sun.org.apache.xml.internal.security.utils.SignatureElementProxy;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.Element;
+ 
+@@ -33,11 +33,7 @@
+  * The Algorithm class which stores the Algorithm URI as a string.
+  *
+  */
+-public abstract class Algorithm extends ElementProxy {
+-
+-   /** {@link java.util.logging} logging facility */
+-    static java.util.logging.Logger log =
+-        java.util.logging.Logger.getLogger(Algorithm.class.getName());
++public abstract class Algorithm extends SignatureElementProxy {
+ 
+    /**
+     *
+@@ -79,7 +75,7 @@
+     */
+    protected void setAlgorithmURI(String algorithmURI) {
+ 
+-      if ((this._state == MODE_CREATE) && (algorithmURI != null)) {
++      if ( (algorithmURI != null)) {
+          this._constructionElement.setAttributeNS(null, Constants._ATT_ALGORITHM,
+                                                 algorithmURI);
+       }
+diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java
+--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java
++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java
+@@ -35,7 +35,7 @@
+ /**
+  * This class maps algorithm identifier URIs to JAVA JCE class names.
+  *
+- * @author $Author: raul $
++ * @author $Author: mullan $
+  */
+ public class JCEMapper {
+ 
+@@ -45,9 +45,9 @@
+ 
+ 
+ 
+-   private static Map uriToJCEName = new HashMap();
++   private static Map uriToJCEName;
+ 
+-   private static Map algorithmsMap = new HashMap();
++   private static Map algorithmsMap;
+ 
+    private static String providerName = null;
+    /**
+@@ -63,6 +63,8 @@
+ 
+    static void loadAlgorithms( Element algorithmsEl) {
+        Element[] algorithms = XMLUtils.selectNodes(algorithmsEl.getFirstChild(),Init.CONF_NS,"Algorithm");
++       uriToJCEName = new HashMap( algorithms.length * 2);
++       algorithmsMap = new HashMap( algorithms.length * 2);
+        for (int i = 0 ;i < algorithms.length ;i ++) {
+            Element el = algorithms[i];
+            String id = el.getAttribute("URI");
+@@ -70,6 +72,7 @@
+            uriToJCEName.put(id, jceName);
+            algorithmsMap.put(id, new Algorithm(el));
+        }
++
+    }
+ 
+    static Algorithm getAlgorithmMapping(String algoURI) {
+@@ -84,8 +87,8 @@
+     *
+     */
+    public static String translateURItoJCEID(String AlgorithmURI) {
+-      if (true)
+-          if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Request for URI " + AlgorithmURI);
++      if (log.isLoggable(java.util.logging.Level.FINE))
++          log.log(java.util.logging.Level.FINE, "Request for URI " + AlgorithmURI);
+ 
+       String jceName = (String) uriToJCEName.get(AlgorithmURI);
+       return jceName;
+@@ -100,8 +103,8 @@
+     *
+     */
+    public static String getAlgorithmClassFromURI(String AlgorithmURI) {
+-       if (true)
+-           if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Request for URI " + AlgorithmURI);
++       if (log.isLoggable(java.util.logging.Level.FINE))
++           log.log(java.util.logging.Level.FINE, "Request for URI " + AlgorithmURI);
+ 
+        return ((Algorithm) algorithmsMap.get(AlgorithmURI)).algorithmClass;
+    }
+diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.java
+--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.java
++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.java
+@@ -20,10 +20,10 @@
+  */
+ package com.sun.org.apache.xml.internal.security.algorithms;
+ 
+-
+-
+ import java.security.MessageDigest;
+ import java.security.NoSuchProviderException;
++import java.util.HashMap;
++import java.util.Map;
+ 
+ import com.sun.org.apache.xml.internal.security.signature.XMLSignatureException;
+ import com.sun.org.apache.xml.internal.security.utils.Constants;
+@@ -41,11 +41,6 @@
+  */
+ public class MessageDigestAlgorithm extends Algorithm {
+ 
+-   /** {@link java.util.logging} logging facility */
+-    static java.util.logging.Logger log =
+-        java.util.logging.Logger.getLogger(
+-                    MessageDigestAlgorithm.class.getName());
+-
+     /** Message Digest - NOT RECOMMENDED MD5*/
+    public static final String ALGO_ID_DIGEST_NOT_RECOMMENDED_MD5 = Constants.MoreAlgorithmsSpecNS + "md5";
+    /** Digest - Required SHA1*/
+@@ -76,6 +71,12 @@
+       this.algorithm = messageDigest;
+    }
+ 
++   static ThreadLocal instances=new ThreadLocal() {
++           protected Object initialValue() {
++                   return new HashMap();
++           };
++   };
++
+    /**
+     * Factory method for constructing a message digest algorithm by name.
+     *
+@@ -86,8 +87,15 @@
+     */
+    public static MessageDigestAlgorithm getInstance(
+            Document doc, String algorithmURI) throws XMLSignatureException {
++          MessageDigest md = getDigestInstance(algorithmURI);
++      return new MessageDigestAlgorithm(doc, md, algorithmURI);
++   }
+ 
+-      String algorithmID = JCEMapper.translateURItoJCEID(algorithmURI);
++private static MessageDigest getDigestInstance(String algorithmURI) throws XMLSignatureException {
++        MessageDigest result=(MessageDigest) ((Map)instances.get()).get(algorithmURI);
++        if (result!=null)
++                return result;
++    String algorithmID = JCEMapper.translateURItoJCEID(algorithmURI);
+ 
+           if (algorithmID == null) {
+                   Object[] exArgs = { algorithmURI };
+@@ -113,8 +121,9 @@
+ 
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
+         }
+-      return new MessageDigestAlgorithm(doc, md, algorithmURI);
+-   }
++      ((Map)instances.get()).put(algorithmURI, md);
++        return md;
++}
+ 
+    /**
+     * Returns the actual {@link java.security.MessageDigest} algorithm object
+diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java
+--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java
++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java
+@@ -25,6 +25,7 @@
+ import java.security.SecureRandom;
+ import java.security.spec.AlgorithmParameterSpec;
+ import java.util.HashMap;
++import java.util.Map;
+ 
+ import com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac;
+ import com.sun.org.apache.xml.internal.security.exceptions.AlgorithmAlreadyRegisteredException;
+@@ -52,9 +53,35 @@
+    /** All available algorithm classes are registered here */
+    static HashMap _algorithmHash = null;
+ 
++   static ThreadLocal instancesSigning=new ThreadLocal() {
++           protected Object initialValue() {
++                   return new HashMap();
++           };
++   };
++
++   static ThreadLocal instancesVerify=new ThreadLocal() {
++           protected Object initialValue() {
++                   return new HashMap();
++           };
++   };
++
++   static ThreadLocal keysSigning=new ThreadLocal() {
++           protected Object initialValue() {
++                   return new HashMap();
++           };
++   };
++   static ThreadLocal keysVerify=new ThreadLocal() {
++           protected Object initialValue() {
++                   return new HashMap();
++           };
++   };
++//   boolean isForSigning=false;
++
+    /** Field _signatureAlgorithm */
+    protected SignatureAlgorithmSpi _signatureAlgorithm = null;
+ 
++   private String algorithmURI;
++
+    /**
+     * Constructor SignatureAlgorithm
+     *
+@@ -64,18 +91,49 @@
+     */
+    public SignatureAlgorithm(Document doc, String algorithmURI)
+            throws XMLSecurityException {
++      super(doc, algorithmURI);
++      this.algorithmURI = algorithmURI;
++   }
+ 
+-      super(doc, algorithmURI);
+ 
+-      try {
++   private void initializeAlgorithm(boolean isForSigning) throws XMLSignatureException {
++           if (_signatureAlgorithm!=null) {
++                   return;
++           }
++           _signatureAlgorithm=isForSigning ? getInstanceForSigning(algorithmURI) : getInstanceForVerify(algorithmURI);
++                this._signatureAlgorithm
++                      .engineGetContextFromElement(this._constructionElement);
++   }
++   private static SignatureAlgorithmSpi getInstanceForSigning(String algorithmURI) throws XMLSignatureException {
++           SignatureAlgorithmSpi result=(SignatureAlgorithmSpi) ((Map)instancesSigning.get()).get(algorithmURI);
++           if (result!=null) {
++                   result.reset();
++                   return result;
++           }
++           result=buildSigner(algorithmURI, result);
++           ((Map)instancesSigning.get()).put(algorithmURI,result);
++           return result;
++   }
++   private static SignatureAlgorithmSpi getInstanceForVerify(String algorithmURI) throws XMLSignatureException {
++           SignatureAlgorithmSpi result=(SignatureAlgorithmSpi) ((Map)instancesVerify.get()).get(algorithmURI);
++           if (result!=null) {
++                   result.reset();
++                   return result;
++           }
++           result=buildSigner(algorithmURI, result);
++           ((Map)instancesVerify.get()).put(algorithmURI,result);
++           return result;
++   }
++
++   private static SignatureAlgorithmSpi buildSigner(String algorithmURI, SignatureAlgorithmSpi result) throws XMLSignatureException {
++        try {
+          Class implementingClass =
+             SignatureAlgorithm.getImplementingClass(algorithmURI);
+-         if (true)
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Create URI \"" + algorithmURI + "\" class \""
++         if (log.isLoggable(java.util.logging.Level.FINE))
++                log.log(java.util.logging.Level.FINE, "Create URI \"" + algorithmURI + "\" class \""
+                    + implementingClass + "\"");
+-
+-         this._signatureAlgorithm =
+-            (SignatureAlgorithmSpi) implementingClass.newInstance();
++         result=(SignatureAlgorithmSpi) implementingClass.newInstance();
++         return   result;
+       }  catch (IllegalAccessException ex) {
+          Object exArgs[] = { algorithmURI, ex.getMessage() };
+ 
+@@ -92,7 +150,7 @@
+          throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+                                          ex);
+       }
+-   }
++}
+ 
+    /**
+     * Constructor SignatureAlgorithm
+@@ -107,7 +165,8 @@
+               throws XMLSecurityException {
+ 
+       this(doc, algorithmURI);
+-
++      this.algorithmURI=algorithmURI;
++      initializeAlgorithm(true);
+       this._signatureAlgorithm.engineSetHMACOutputLength(HMACOutputLength);
+       ((IntegrityHmac)this._signatureAlgorithm)
+          .engineAddContextToElement(this._constructionElement);
+@@ -124,37 +183,7 @@
+            throws XMLSecurityException {
+ 
+       super(element, BaseURI);
+-
+-      String algorithmURI = this.getURI();
+-
+-      try {
+-         Class implementingClass =
+-            SignatureAlgorithm.getImplementingClass(algorithmURI);
+-         if (true)
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Create URI \"" + algorithmURI + "\" class \""
+-                   + implementingClass + "\"");
+-
+-         this._signatureAlgorithm =
+-            (SignatureAlgorithmSpi) implementingClass.newInstance();
+-
+-         this._signatureAlgorithm
+-            .engineGetContextFromElement(this._constructionElement);
+-      }  catch (IllegalAccessException ex) {
+-         Object exArgs[] = { algorithmURI, ex.getMessage() };
+-
+-         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+-                                         ex);
+-      } catch (InstantiationException ex) {
+-         Object exArgs[] = { algorithmURI, ex.getMessage() };
+-
+-         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+-                                         ex);
+-      } catch (NullPointerException ex) {
+-         Object exArgs[] = { algorithmURI, ex.getMessage() };
+-
+-         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+-                                         ex);
+-      }
++      algorithmURI = this.getURI();
+    }
+ 
+    /**
+@@ -175,7 +204,12 @@
+     * @return the result of the {@link java.security.Signature#getAlgorithm} method
+     */
+    public String getJCEAlgorithmString() {
+-      return this._signatureAlgorithm.engineGetJCEAlgorithmString();
++      try {
++                return getInstanceForVerify(algorithmURI).engineGetJCEAlgorithmString();
++        } catch (XMLSignatureException e) {
++                //Ignore.
++                return null;
++        }
+    }
+ 
+    /**
+@@ -184,7 +218,11 @@
+     * @return The Provider of this Signature Alogrithm
+     */
+    public String getJCEProviderName() {
+-      return this._signatureAlgorithm.engineGetJCEProviderName();
++      try {
++                return getInstanceForVerify(algorithmURI).engineGetJCEProviderName();
++        } catch (XMLSignatureException e) {
++                return null;
++        }
+    }
+ 
+    /**
+@@ -231,7 +269,13 @@
+     * @throws XMLSignatureException
+     */
+    public void initSign(Key signingKey) throws XMLSignatureException {
+-      this._signatureAlgorithm.engineInitSign(signingKey);
++           initializeAlgorithm(true);
++           Map map=(Map)keysSigning.get();
++       if (map.get(this.algorithmURI)==signingKey) {
++           return;
++       }
++       map.put(this.algorithmURI,signingKey);
++           this._signatureAlgorithm.engineInitSign(signingKey);
+    }
+ 
+    /**
+@@ -244,6 +288,7 @@
+     */
+    public void initSign(Key signingKey, SecureRandom secureRandom)
+            throws XMLSignatureException {
++           initializeAlgorithm(true);
+       this._signatureAlgorithm.engineInitSign(signingKey, secureRandom);
+    }
+ 
+@@ -258,6 +303,7 @@
+    public void initSign(
+            Key signingKey, AlgorithmParameterSpec algorithmParameterSpec)
+               throws XMLSignatureException {
++           initializeAlgorithm(true);
+       this._signatureAlgorithm.engineInitSign(signingKey,
+                                               algorithmParameterSpec);
+    }
+@@ -282,7 +328,13 @@
+     * @throws XMLSignatureException
+     */
+    public void initVerify(Key verificationKey) throws XMLSignatureException {
+-      this._signatureAlgorithm.engineInitVerify(verificationKey);
++           initializeAlgorithm(false);
++           Map map=(Map)keysVerify.get();
++           if (map.get(this.algorithmURI)==verificationKey) {
++           return;
++       }
++           map.put(this.algorithmURI,verificationKey);
++           this._signatureAlgorithm.engineInitVerify(verificationKey);
+    }
+ 
+    /**
+@@ -320,7 +372,7 @@
+                .getLogger(SignatureAlgorithm.class.getName());
+       }
+ 
+-      if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Init() called");
++      log.log(java.util.logging.Level.FINE, "Init() called");
+ 
+       if (!SignatureAlgorithm._alreadyInitialized) {
+          SignatureAlgorithm._algorithmHash = new HashMap(10);
+@@ -340,8 +392,8 @@
+            throws AlgorithmAlreadyRegisteredException,XMLSignatureException {
+ 
+       {
+-         if (true)
+-                if (log.isLoggable(java.util.logging.Level.FINE))                                     log.log(java.util.logging.Level.FINE, "Try to register " + algorithmURI + " " + implementingClass);
++         if (log.isLoggable(java.util.logging.Level.FINE))
++                log.log(java.util.logging.Level.FINE, "Try to register " + algorithmURI + " " + implementingClass);
+ 
+          // are we already registered?
+          Class registeredClassClass =
+diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.java
+--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.java
++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.java
+@@ -20,27 +20,20 @@
+  */
+ package com.sun.org.apache.xml.internal.security.algorithms;
+ 
+-
+-
+ import java.security.Key;
+ import java.security.SecureRandom;
+ import java.security.spec.AlgorithmParameterSpec;
+ 
+ import com.sun.org.apache.xml.internal.security.signature.XMLSignatureException;
+-import org.w3c.dom.Document;
+ import org.w3c.dom.Element;
+ 
+ 
+ /**
+  *
+- * @author $Author: raul $
++ * @author $Author: mullan $
+  */
+ public abstract class SignatureAlgorithmSpi {
+ 
+-   /** {@link java.util.logging} logging facility */
+-    static java.util.logging.Logger log =
+-        java.util.logging.Logger.getLogger(SignatureAlgorithmSpi.class.getName());
+-
+    /**
+     * Returns the URI representation of <code>Transformation algorithm</code>
+     *
+@@ -167,20 +160,6 @@
+    protected abstract void engineSetParameter(AlgorithmParameterSpec params)
+       throws XMLSignatureException;
+ 
+-   /** Field _doc */
+-   Document _doc = null;
+-
+-   /**
+-    * Method engineSetDocument
+-    *
+-    * @param doc
+-    */
+-   protected void engineSetDocument(Document doc) {
+-      this._doc = doc;
+-   }
+-
+-   /** Field _constructionElement */
+-   Element _constructionElement = null;
+ 
+    /**
+     * Method engineGetContextFromElement
+@@ -188,7 +167,6 @@
+     * @param element
+     */
+    protected void engineGetContextFromElement(Element element) {
+-      this._constructionElement = element;
+    }
+ 
+    /**
+@@ -199,4 +177,7 @@
+     */
+    protected abstract void engineSetHMACOutputLength(int HMACOutputLength)
+       throws XMLSignatureException;
++
++    public void reset() {
++        }
+ }
+diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.java
+--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.java
++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.java
+@@ -45,7 +45,7 @@
+ 
+ /**
+  *
+- * @author $Author: raul $
++ * @author $Author: mullan $
+  */
+ public abstract class IntegrityHmac extends SignatureAlgorithmSpi {
+ 

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 3 Jung-uk Kim freebsd_committer freebsd_triage 2013-07-16 22:28:20 UTC
State Changed
From-To: open->closed

Committed, thanks!