JBoss Portal SVN: r12660 - modules/identity/branches/JBP_IDENTITY_BRANCH_1_0/identity/src/main/org/jboss/portal/identity/ldap.
by portal-commits@lists.jboss.org
Author: bdaw
Date: 2009-01-27 08:00:33 -0500 (Tue, 27 Jan 2009)
New Revision: 12660
Modified:
modules/identity/branches/JBP_IDENTITY_BRANCH_1_0/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticGroupMembershipModuleImpl.java
modules/identity/branches/JBP_IDENTITY_BRANCH_1_0/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticRoleMembershipModuleImpl.java
Log:
JBPORTAL-2282
Modified: modules/identity/branches/JBP_IDENTITY_BRANCH_1_0/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticGroupMembershipModuleImpl.java
===================================================================
--- modules/identity/branches/JBP_IDENTITY_BRANCH_1_0/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticGroupMembershipModuleImpl.java 2009-01-27 12:35:51 UTC (rev 12659)
+++ modules/identity/branches/JBP_IDENTITY_BRANCH_1_0/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticGroupMembershipModuleImpl.java 2009-01-27 13:00:33 UTC (rev 12660)
@@ -167,7 +167,7 @@
}
//obtain Role entry attributes from directory
- Attributes attrs = ldapContext.getAttributes(ldapRole.getDn());
+ Attributes attrs = ldapContext.getAttributes(ldapRole.getDn(), new String[] {getMemberAttributeID()});
//log.debug("Role attributes: " + attrs);
if (attrs == null)
Modified: modules/identity/branches/JBP_IDENTITY_BRANCH_1_0/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticRoleMembershipModuleImpl.java
===================================================================
--- modules/identity/branches/JBP_IDENTITY_BRANCH_1_0/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticRoleMembershipModuleImpl.java 2009-01-27 12:35:51 UTC (rev 12659)
+++ modules/identity/branches/JBP_IDENTITY_BRANCH_1_0/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticRoleMembershipModuleImpl.java 2009-01-27 13:00:33 UTC (rev 12660)
@@ -49,7 +49,7 @@
* @author <a href="mailto:boleslaw.dawidowicz@jboss.org">Boleslaw Dawidowicz</a>
* @version $Revision: 1.1 $
*/
-public class LDAPStaticRoleMembershipModuleImpl extends LDAPMembershipModule//extends AbstractJBossService implements MembershipModule
+public class LDAPStaticRoleMembershipModuleImpl extends LDAPMembershipModule
{
private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LDAPStaticRoleMembershipModuleImpl.class);
@@ -98,7 +98,7 @@
}
//obtain Role entry attributes from directory
- Attributes attrs = ldapContext.getAttributes(ldapUser.getDn());
+ Attributes attrs = ldapContext.getAttributes(ldapUser.getDn(), new String[] {getMemberAttributeID()});
//log.debug("User attributes: " + attrs);
if (attrs == null )
15 years, 5 months
JBoss Portal SVN: r12659 - branches/Enterprise_Portal_Platform_4_3/server/src/main/org/jboss/portal/server.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2009-01-27 07:35:51 -0500 (Tue, 27 Jan 2009)
New Revision: 12659
Modified:
branches/Enterprise_Portal_Platform_4_3/server/src/main/org/jboss/portal/server/PortalConstants.java
Log:
Use correct version
Modified: branches/Enterprise_Portal_Platform_4_3/server/src/main/org/jboss/portal/server/PortalConstants.java
===================================================================
--- branches/Enterprise_Portal_Platform_4_3/server/src/main/org/jboss/portal/server/PortalConstants.java 2009-01-27 12:20:55 UTC (rev 12658)
+++ branches/Enterprise_Portal_Platform_4_3/server/src/main/org/jboss/portal/server/PortalConstants.java 2009-01-27 12:35:51 UTC (rev 12659)
@@ -36,7 +36,7 @@
{
/** Current version. */
- public static final Version VERSION = new Version("JBoss Enterprise Portal Platform", 4, 3, 0, new Version.Qualifier(Version.Qualifier.Prefix.SNAPSHOT), "Enterprise");
+ public static final Version VERSION = new Version("JBoss Enterprise Portal Platform", 4, 3, 0, new Version.Qualifier(Version.Qualifier.Prefix.GA), "Enterprise");
/** The default portal name. */
public static final String DEFAULT_PORTAL_NAME = "default";
15 years, 5 months
JBoss Portal SVN: r12658 - tags.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2009-01-27 07:20:55 -0500 (Tue, 27 Jan 2009)
New Revision: 12658
Added:
tags/Enterprise_Portal_Platform_4_3_GA/
Log:
Tagging EPP 4.3
Copied: tags/Enterprise_Portal_Platform_4_3_GA (from rev 12657, branches/Enterprise_Portal_Platform_4_3)
15 years, 5 months
JBoss Portal SVN: r12657 - docs/enterprise/trunk.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2009-01-27 05:54:43 -0500 (Tue, 27 Jan 2009)
New Revision: 12657
Added:
docs/enterprise/trunk/User_Guide/
Removed:
docs/enterprise/trunk/UserGuide/
Log:
For consistency sake
Copied: docs/enterprise/trunk/User_Guide (from rev 12656, docs/enterprise/trunk/UserGuide)
15 years, 5 months
JBoss Portal SVN: r12656 - in docs/enterprise/trunk: Read_Me and 2 other directories.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2009-01-27 05:51:17 -0500 (Tue, 27 Jan 2009)
New Revision: 12656
Added:
docs/enterprise/trunk/Read_Me/
docs/enterprise/trunk/Read_Me/Makefile
docs/enterprise/trunk/Read_Me/en-US/
docs/enterprise/trunk/Read_Me/en-US/Author_Group.xml
docs/enterprise/trunk/Read_Me/en-US/Book_Info.xml
docs/enterprise/trunk/Read_Me/en-US/Release_Notes_GA.ent
docs/enterprise/trunk/Read_Me/en-US/Release_Notes_GA.xml
docs/enterprise/trunk/Read_Me/en-US/Revision_History.xml
docs/enterprise/trunk/Read_Me/en-US/images/
docs/enterprise/trunk/Read_Me/en-US/images/icon.svg
Log:
Adding Read Me doc
Added: docs/enterprise/trunk/Read_Me/Makefile
===================================================================
--- docs/enterprise/trunk/Read_Me/Makefile (rev 0)
+++ docs/enterprise/trunk/Read_Me/Makefile 2009-01-27 10:51:17 UTC (rev 12656)
@@ -0,0 +1,15 @@
+#Makefile for readme
+
+XML_LANG = en-US
+
+BRAND = JBoss
+
+#OTHER_LANGS = as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW
+#OTHER_LANGS = de-DE es-ES fr-FR pt-BR zh-CN
+
+TRANSLATIONS = $(XML_LANG) $(OTHER_LANGS)
+
+
+COMMON_CONFIG = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+
Added: docs/enterprise/trunk/Read_Me/en-US/Author_Group.xml
===================================================================
--- docs/enterprise/trunk/Read_Me/en-US/Author_Group.xml (rev 0)
+++ docs/enterprise/trunk/Read_Me/en-US/Author_Group.xml 2009-01-27 10:51:17 UTC (rev 12656)
@@ -0,0 +1,5 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup><corpauthor>Red Hat</corpauthor></authorgroup>
Added: docs/enterprise/trunk/Read_Me/en-US/Book_Info.xml
===================================================================
--- docs/enterprise/trunk/Read_Me/en-US/Book_Info.xml (rev 0)
+++ docs/enterprise/trunk/Read_Me/en-US/Book_Info.xml 2009-01-27 10:51:17 UTC (rev 12656)
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+
+<articleinfo>
+ <title>Release Notes GA</title>
+ <subtitle>for Use with JBoss Enterprise Portal Platform 4.3</subtitle>
+ <edition>1.0</edition>
+ <pubsnumber>6</pubsnumber>
+ <productname>JBoss Enterprise Portal Platform</productname>
+ <productnumber>4.3</productnumber>
+ <abstract>
+ <para>
+ These release notes contain important information related to JBoss Enterprise Portal Platform 4.3 that may not be currently available in the Product Manuals. You should read these Release Notes in their entirety before installing JBoss Enterprise Portal Platform 4.3.
+ </para>
+ </abstract>
+ <isbn>N/A</isbn>
+ <corpauthor>
+ <inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="Common_Content/images/redhat-logo.svg" />
+ </imageobject>
+ </inlinemediaobject>
+ </corpauthor>
+ <copyright>
+ <year>&YEAR;</year>
+ <holder>&HOLDER;</holder>
+ </copyright>
+ <xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</articleinfo>
Added: docs/enterprise/trunk/Read_Me/en-US/Release_Notes_GA.ent
===================================================================
--- docs/enterprise/trunk/Read_Me/en-US/Release_Notes_GA.ent (rev 0)
+++ docs/enterprise/trunk/Read_Me/en-US/Release_Notes_GA.ent 2009-01-27 10:51:17 UTC (rev 12656)
@@ -0,0 +1,3 @@
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2008">
+<!ENTITY VERSION "4.3">
Added: docs/enterprise/trunk/Read_Me/en-US/Release_Notes_GA.xml
===================================================================
--- docs/enterprise/trunk/Read_Me/en-US/Release_Notes_GA.xml (rev 0)
+++ docs/enterprise/trunk/Read_Me/en-US/Release_Notes_GA.xml 2009-01-27 10:51:17 UTC (rev 12656)
@@ -0,0 +1,867 @@
+<?xml version="1.0"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % RH_ENTITIES SYSTEM "./Common_Config/rh-entities.ent">
+%RH_ENTITIES;
+]>
+<article id="JBEAP-Release-Notes">
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Book_Info.xml"/>
+ <section id="Introduction">
+ <title>
+ Introduction
+ </title>
+ <para>
+ These release notes contain important information related to JBoss Enterprise Portal Platform &VERSION;. New features, known problems, resources, and other current issues are addressed here.
+ </para>
+ <section id="Overview">
+ <title>Overview</title>
+ <para>
+ JBoss Enterprise Portal Platform facilitates the delivery of web-based composite applications and high-performance web presences. Through its agile, reusable framework, customers can minimize the cost and complexity of their web infrastructures. Its use of open standards mitigates the risk of vendor lock-in, ensuring compatibility. As an integral component of JBoss Enterprise Middleware, the large and vibrant JBoss.org developer community fosters its continued innovation and enterprise quality. And it's deployed on JBoss Enterprise Application Platform—the industry’s #1 J2EE-certified application platform ensuring performance, scalability, and a reliable and straightforward path to implementation.
+ </para>
+ <para>
+JBoss Enterprise Application Platform is the next evolutionary step in open source enterprise software. It is a powerful tool for developing rich, high performance, Web 2.0 applications on a pure Java Platform.
+ </para>
+ <para>
+ JBoss Enterprise Application Platform provides complete compatibility with existing J2EE 1.4 enterprise Java applications. At the same time, almost all the key features and components defined in the Java EE 5.0 specification are supported. So your new enterprise Java applications can take immediate advantage of the Java EE 5.0's significantly simpler POJO-based programming model.
+ </para>
+ <para>
+ Further, by integrating best-of-breed open source frameworks such as JBoss Seam, Hibernate, Tomcat, and JBoss Cache the Platform takes advantage of innovations in the open source community. As well, JBoss Enterprise Application Platform is fully tested and supported by Red Hat, and is certified to work on many leading enterprise hardware and software products.
+ </para>
+ <para>
+ All of which means you can develop your new application taking advantage of Java EE 5.0 technologies immediately and with the confidence of knowing it will remain forward-compatible with future versions of the JBoss Platform.
+ </para>
+ </section>
+ </section>
+ <section id="New_Features">
+ <title>New Features in JBoss Enterprise Portal Platform 4.3</title>
+ <section id="JSR-286">
+ <title>Portlet 2.0 -JSR 286</title>
+ <para>
+ The main improvement of the Enterprise Portal Platform is the support of Portlet 2.0 specification which enables Inter Portlet Communication by sharing parameters and event support.
+ </para>
+ </section>
+ </section>
+ <section id="Component_Versions">
+ <title>Component Versions</title>
+ <para>
+ This section details the versions of the components which create the Enterprise Portal Platform 4.3 that can be found in release on top of the components delivered by the Enterprise Application Platform 4.3.CP03.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Identity Module 1.0.7
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Common Module 1.2.3
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Portlet Module 2.0.5
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Web Module 1.2.3
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ JBoss Portlet Bridge 1.0.B6
+ </para>
+ </listitem>
+ </itemizedlist>
+ <note>
+ <para>
+ The Enterprise Portal Platform Server has been redefined for the enterprise market to a level where direct association to a community release can no longer be drawn.
+ </para>
+ </note>
+ </section>
+ <section id="Product-Support-and-License-Links">
+ <title>
+ Product Support and License Website Links
+ </title>
+ <formalpara>
+ <title>Support Processes</title>
+ <para>
+ <ulink url="http://www.redhat.com/support/process/">http://www.redhat.com/support/process/</ulink>
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>
+ Production Support Scope of Coverage
+ </title>
+ <para>
+ <ulink url="http://www.redhat.com/support/policy/soc/production">http://www.redhat.com/support/policy/soc/production</ulink>
+ </para>
+ </formalpara>
+
+
+ <formalpara>
+ <title>
+ Production Support Service Level Agreement
+ </title>
+
+ <para>
+ <ulink url="http://www.redhat.com/support/policy/sla/production/">http://www.redhat.com/support/policy/sla/production/</ulink>
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>
+ Developer Support Scope of Coverage
+ </title>
+
+ <para>
+ <ulink url="http://www.redhat.com/support/policy/soc/developer/">http://www.redhat.com/support/policy/soc/developer/</ulink>
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>
+ Developer Support Service Level Agreement
+ </title>
+
+ <para>
+ <ulink url="http://www.redhat.com/support/policy/sla/developer/">http://www.redhat.com/support/policy/sla/developer/</ulink>
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>
+ Product Update and Support Policy by Product
+ </title>
+
+ <para>
+ <ulink url="http://www.redhat.com/security/updates/jboss_notes/">http://www.redhat.com/security/updates/jboss_notes/</ulink>
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>
+ JBoss End User License Agreement
+ </title>
+
+ <para>
+ <ulink url="http://www.redhat.com/licenses/jboss_eula.html">http://www.redhat.com/licenses/jboss_eula.html</ulink>
+ </para>
+ </formalpara>
+ </section>
+<!--
+ <section id="Issues-fixed-in-this-release">
+ <title>
+ Issues fixed in this release
+ </title>
+
+ <para>
+ Following is a list of issues fixed in this release:
+ </para>
+ <formalpara>
+ <title>JBoss Messaging</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1615">JBPAPP-1615</ulink>: The JBoss Messaging component of the EAP has been upgraded to version 1.4.0.SP3-CP05. A list of the included fixes is as follows:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <literal>default</literal> profile for JBoss without any reconfiguration uses the <classname>ClusteredConnectionFactory</classname> with a non-clustered post-office, however warnings would be loged about this behavior when the log messages should be reduced from a <varname>WARN</varname> level to an <varname>INFO</varname> level. The upgrade to this version of JBoss Messaging sees this implemented within the log.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <classname>ClusterViewUpdateTest</classname> was broken and did not work correctly in previous releases with the cause being that the expected time until failure detection for some clustering tests was too long. In order to correct this the values for <varname>validatorPingPeriod</varname> and <varname>validatorPingTimeout</varname> have been changed to be 2 seconds each, combining to 4 seconds as the total time until expected failure detection.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Client connection parameters were not passed to the JBoss Remoting layer, forcing Remoting to use default values instead of user configured values. In order to use the correct values, <filename>JMSRemotingConnection.java</filename> has been updated so that the <methodname>Client.addConnectionListener</methodname> method is used with <varname>listener</varname> and <varname>serverLocator.gerParameters()</varname> as parameters.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Messages which are sheduled for delivery in the future were not being removed correctly when the <methodname>removeAllMessages()</methodname> method was being called, causing the messages to bre requeued as soon as the application server or queue is restarted. <filename>ChannelSupport.java</filename> has been updated to import the <filename>TimeoutExt</filename> library in order to cast the timeout value to <filename>TimeoutExt</filename> in order to obtain the reference value via the <methodname>getTimeoutTarget()</methodname> method. With this new reference value information, the sheduled messages can be correctly removed from the queue.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ There was an occurance where a user may deploy a clustered queue in a single node instead of in all the nodes and the failover process would not work because of this. When this occurred an <exceptionname>IllegalStateException</exceptionname> would be generated, however this was not considered enough of a prominent warning about not deploying clustered queues correctly. <filename>MessagingPostOffice.java</filename> has now been updated to log a warning which outlies that clustered destinations must be deployed on all nodes of a cluster, instead of generating an <exceptionname>IllegalStateException</exceptionname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>ClientAOPStackLoader</classname>, <classname>SecurityAspect.check()</classname> and <classname>ServerConnectionFactoryEndpoint</classname> needed to be able to optain TCL within a privileged block, otherwise an <exceptionname>AccessControlException</exceptionname> is produced. To fix this bug, the <methodname>setTCL</methodname>, <methodname>getTCL</methodname> and other TCL methods have been set within security blocks; this prevents access denied exceptions from <classname>ClientAOPStackLoader</classname>, <classname>SecurityAspect.check()</classname> and <classname>ServerConnectionFactoryEndpoint</classname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The logging of actions within JBoss Messaging did not include the logging of messages when they are moved to the expiry or dead letter queues as this was only logged at trace level. In order to add this enhanced level of logging, the <filename>ClientConsumer.java</filename> file has been updated to log warning messages and debug information pertaining to the move of messages to the expiry or dead letter queues; <filename>ServerSessionEndpoint.java</filename> has also been updated in the same mannor.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ There was an error when a message was received under a XA tx and the JBoss Messaging XAResource is prepared but not committed, a message could be received by another consumer in another transaction while the first is still in progress. The correct behaviour is for JBoss Messaging to hold the message until the associated transaction is committed or rolled back, enabling duplication of message deliveries to be avoided. In the <filename>Delivery.java</filename> file, messages are now marked with a boolean value detailing if they are for delivery with a XA transaction and if this transaction is prepared and <filename>SimpleDelivery.java</filename> now implements this new information.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <methodname>shutdownNow()</methodname> method was not synchronized and may cause a <exceptionname>NoSuchElementException</exceptionname> during runtime as a result. A synchronization block has been placed around the <methodname>shutdownNow()</methodname> code within <filename>OrderedExecutorFactory.java</filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ There was an issue with the <classname>org.jboss.jms.server.messagecounter.MessageCounter</classname> class not being serializable as it caused an <exceptionname>UndeclaredThrowableException</exceptionname>. <filename>MessageCounter.java</filename> has been updated to now import and implement the <literal>Serializable</literal> library and be given a <varname>serialVersionUID</varname>, allowing the <classname>org.jboss.jms.server.messagecounter.MessageCounter</classname> class to be serializable.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When the methods <methodname>unregisterSucker()</methodname> or <methodname>registerSucker()</methodname> was called a <exceptionname>ConcurrentModificationException</exceptionname> would be generated by the time the <literal>HashSet</literal> containing the <literal>suckers</literal> was iterated. The issue would present itself on clusters with a magnitude of nodes (for instance it appeared on a 8 node cluster but not a 4 node cluster). This bug was corrected by creating an iterator that used a private set of <literal>suckers</literal> for iteration through the <literal>HashSet</literal> of <literal>suckers</literal> in order to avoid the exception.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The bridge within JBoss Messaging would only retry connection creation to a remote destination after startup and if the remote provider was not available at startup, the bridge would fail to start. The <filename>Bridge.java</filename> and <filename>BridgeService.java</filename> files have undergone extensive modification and now the <literal>factory</literal> is set to the <literal>bridge</literal> which undertakes the lookup itself instead of looking up the destinations.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>JBoss Cache</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1533">JBPAPP-1533</ulink>: The JBoss Cache component of the EAP has been upgraded to version 1.4.1.SP11. A list of the included fixes is as follows:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <classname>JDBCCacheLoader</classname> implementation did not work with Sybase as it would try to set a null <varname>BLOB</varname> column which is unsupported within Sybase. To correct this the <filename>JDBCCacheLoader.java</filename> file has been updated so that the Sybase Driver sets a null <varname>LONGVARBINARY</varname> value, allowing the <classname>JDBCCacheLoader</classname> implementation to work correctly.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>JDBCExtCacheLoader</classname> did not handle persistent state transfer correctly since the <methodname>JDBCExtCacheLoader.storeState()</methodname> method would use avaliable bytes on the <classname>MarshalledValueInputStream</classname> rather than on the <classname>ByteArrayInputStream</classname> when storing the persistent state. This was an issue because the <classname>MarshalledValueInputStream</classname> always returns a null value, meaning the persistent state was never written. In fixing this issue the <filename>JDBCExtendedCacheLoader.java</filename> file has been modified so that it specifies to check for avaliable space on the <classname>ByteArrayInputStream</classname>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>JBoss Remoting</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1531">JBPAPP-1531</ulink>: The JBoss Remoting component of the EAP has been upgraded to version 2.2.2.SP11. A list of the included fixes is as follows:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <methodname>ConnectionValidator.run()</methodname> method had the ability to be called by a user before the private method <methodname>ConnectionValidator.start()</methodname> was called, resulting in the <varname>clientInvoker</varname> and <varname>timer</varname> fields being set to null and generating a <exceptionname>NullPointerException</exceptionname>. Within the <filename>ConnectionValidator.java</filename> file the fields are now checked to see if they are null upon execution of the <methodname>ConnectionValidator.run()</methodname> method, one or both are then an <exceptionname>IllegalStateException</exceptionname> is displayed to the user outlining that <methodname>ConnectionValidator.run()</methodname> should not be called directly but <methodname>addConnectionListener()</methodname> should be used instead.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Two bugs existed within the <methodname>org.jboss.remoting.marshal.MarshallerLoaderHandler.loadClassBytes()</methodname> method that prohibited remote classloading to work correctly with isolated EARs. The first was that a while loop in the code needed a break and the second was that the call to the <methodname>org.jboss.mx.loading.LoaderRepository.getCachedClass()</methodname> method should have been a general call to <methodname>LoaderRepository.loadClass()</methodname>. These two issues have been rectified with this Remoting update, allowing remote classloading to function correctly.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A bug existed within the Remoting component by which the RemotingClassLoader would always attempt to load a class over the network first if remote classloading was enabled, leading to conflicts if the class was avaliable locally before. The code has been corrected to check locally first before looking remotely.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>ServerInvokerCallbackHandler</classname> class would become unresponsive when calling the <methodname>BlockingCallbackStore.add()</methodname> method after locking the callback field with a true responce from the <methodname>persistCallback()</methodname> method. This would occur because the <methodname>BlockingCallbackStore.getNext()</methodname> needed to control the lock on the callback field to break the waiting period, however this could not be achieved because of the wait period. To fix this issue the call to the <methodname>BlockingCallbackStore.add()</methodname> method has been removed as it was an unnecessary step.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>HTTPClientInvoker</classname> did not support Beginner's All-purpose Symbolic Instruction Code (BASIC) authentication for proxies when the proxy was configured through system property options of <methodname>http.proxyHost</methodname> and <methodname>http.proxyPort</methodname>. The issue appears because the <classname>HTTPClientInvoker</classname> would not check for the existence of these options and in tern it would never create a <methodname>Proxy-Authorization</methodname> request header, which is necessary for normal opperation. To fix this the <classname>HTTPClientInvoker</classname> has been modified to check for the existence of the <methodname>http.proxyHost</methodname> option and if it detects its use, creates a <methodname>Proxy-Authorization</methodname> request header.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <classname>HTTPClientInvoker</classname> would generate a <exceptionname>NullPointerException</exceptionname> when the HTTP server returned an error code without any content and then the <methodname>java.net.HttpUrlConnection.getInputStream()</methodname> method returned a null value. In order to improve control over this behavior, the new variable <varname>UNMARSHAL_NULL_STREAM</varname> has been added to the <classname>HTTPClientInvoker</classname>. If this variable is set to true (the default value) the default behavior is executed, however if it is set to false the call to the <methodname>UnMarshaller.read()</methodname> is skipped.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Within the <classname>InvokerRegistry</classname> an error existed associated with the sequencing of events and <classname>serverLocators</classname> would return a null on occasion. To correct this race condition, the sequencing of events within the <classname>InvokerRegistry</classname> has been rearragned so that references to <classname>transportClientFactoryClasses</classname> and <classname>clientLocators</classname> are governed by <classname>clientLock</classname> and references to <classname>transportServerFactoryClasses</classname>, <classname>serverLocators</classname>, and <classname>registeredLocators</classname> are governed by <classname>serverLock</classname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A bug existed where the value in the client configuration map of the <classname>ConnectionValidator</classname> would be ignored when the overloaded <methodname>org.jboss.remoting.Client</methodname> method was called and the <varname>DEFAULT_PING_PERIOD</varname> variable value was placed into the metadata map passed to the <classname>ConnectionValidator</classname>. This has been corrected by updating <classname>org.jboss.remoting.Client.addConnectionListener</classname> so that <varname>DEFAULT_PING_PERIOD</varname> is only passed if the value of <varname>VALIDATOR_PING_PERIOD</varname> within the client's configuration map has not been set.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <classname>ConnectionValidator</classname> may become unresponsive then the <methodname>run()</methodname> method is executed and utilizes the <varname>lock</varname> variable. The methods within the <methodname>run()</methodname> method are meant to time out so that the <varname>lock</varname> variable can become avaliable to the <methodname>notifyListeners()</methodname> in the event of a network failure; however <methodname>run()</methodname> may execute again before <methodname>notifyListeners()</methodname> can. The synchronization on the <varname>lock</varname> variable has been modified to avoid this issue to enable correct operation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ During occurances of the server being under heavy load, an <exceptionname>IllegalStateException</exceptionname> would occur within the <methodname>ConnectorValidator.run()</methodname> method because further synchronization on the <varname>lock</varname> variable was necessary. This issue was fixed during the rectification of the above problem.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A synchronization error within the <classname>MarshalFactory</classname> was allowing a subsystem to add a marshaller at the same time as EJB3 was trying to extract one causing users to receive an <exceptionname>InvalidMarshallingResource</exceptionname> exception; this also applied to unmarshallers. The error has been fixed by updating the <filename>jboss-remoting.jar</filename> file to include synchronized static Maps within the <classname>MarshalFactory</classname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>SocketServerInvoker</classname> had an issue when shutting down <varname>ServerThreads</varname> causing a user to possibly receive an invocation to a closed <classname>SocketServerInvoker</classname> on the client side, causing an <exceptionname>InvalidStateException</exceptionname>. Allowing this exception would cause a clustered EJB3 system to generate a <exceptionname>UndeclaredThrowableException</exceptionname> instead of trying alternative servers. To allow for alternatives to be attempted, an optional behavior of allowing the <classname>MicroRemoteClientInvoker</classname> to interpret an <exceptionname>InvalidStateException</exceptionname> as a <exceptionname>CannotConnectException</exceptionname>, allowing for other servers to be attempted.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>JBoss Web</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1493">JBPAPP-1493</ulink>: An error would be shown on occassion by <emphasis>Internet Explorer</emphasis> because xml content would not be sent when <emphasis>PROPFIND</emphasis> requests were being used. This has been fixed by creating a new method within <filename>WebdavServlet.java</filename> that overrides the <methodname>DefaultServlet</methodname> implementation for servlet request processing and testing for input before launching the <methodname>DocumentBuilder</methodname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1470">JBPAPP-1470</ulink>: When using APR (Apache Portable Runtime) on any operating system other than those which use the Linux Kernal 2.4 or newer, the <parameter>deferAccept</parameter> option would be set to false in the <methodname>AprEndpoint</methodname>. This may lead to a <exceptionname>NullPointerException</exceptionname> as the <methodname>accepter</methodname> thread starts to process a request while also calling for a <methodname>poller</methodname> before initialization. The issue has been resolved by moving the <methodname>acceptor</methodname> threads to being executed last when starting the <methodname>AprEndpoint</methodname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1334">JBPAPP-1334</ulink>: The JBoss Web component of the EAP has been upgraded to version 2.0.0-6.CP09. A list of the included fixes is as follows:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ If a war deployment included its own version of <filename>xalan.jar</filename> and <filename>xercesImpl.jar</filename> in <filename>WEB-INF/lib</filename>, the JBossWeb servlet container classloader returns JBoss provided version of the <literal>SAXParser</literal> from <methodname>SAXParserFactory.newInstance().newSAXParser()</methodname> rather than the version provided in the war deployment. To fix this bug the <filename>WebAppClassLoader.java</filename> has been updated to ensure the correct parser is used.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>JBoss Web Services</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1552">JBPAPP-1552</ulink>: When deploying JBoss Web Services within EAP without internet access, <classname>JBossWSEntityResolver</classname> would not resolve any schemas causing Web Services for Remote Portlets (WSRP) to produce an error. This issue has been fixed by modifying <classname>JBossWSEntityResolver</classname> within <filename>WSDL11Reader.java</filename> to resolve schemas locally when an internet connection is unavaliable.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1449">JBPAPP-1449</ulink>: WSProvide would ignore a <literal>SOAPBinding</literal> declaration specified in the EJB3 stateless session bean. To correct this and allow <literal>SOAPBinding</literal> to work as expected the following files have been modified: <filename>WSDLGenerator.java</filename>, <filename>SOAPEndpoint.java</filename>, <filename>Constants.java</filename>, <filename>WSDLWriter.java</filename>, <filename>SOAPBindingTestCase.java</filename> and <filename>WSDL11Writer.java</filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1439">JBPAPP-1439</ulink>: The component <emphasis>Xerces</emphasis> of JBoss Web Services has a feature that optimises the parsing of messages called <methodname>Deffered Node Expansion</methodname>.This defers node expansion until the nodes are accessed, improving performance where not all nodes need to be visited. However memory overheads are increased, which can be considerable for large messages.
+ </para>
+ <para>
+ This release grants the user an option to disable the <methodname>Deffered Node Expansion</methodname> feature and have all nodes expand. To achieve this the following system property needs to be set:
+ </para>
+<programlisting>
+-Dorg.jboss.ws.disable_deferred_node_expansion=true
+</programlisting>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>JBoss Seam</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1553">JBPAPP-1553</ulink>: When the <methodname>parseRequest()</methodname> method of the <classname>org.jboss.seam.web.MultipartRequest</classname> class uploaded a large file, there were occurances when this would cause an endless loop and use 100% of the computers CPU. In order to break out of the loop, a <varname>loopCounter</varname> has been implemented within the <filename>MultipartRequest.java</filename> file.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1494">JBPAPP-1494</ulink>: The portal example that was previously included with the Seam EAP distribution has been removed in order to avoid confusion that Seam 1.2.1 included with the EAP supports portal.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1044">JBPAPP-1044</ulink>: After basic interaction with the Seam examples <filename>chatroom</filename>, <filename>mail</filename>, <filename>registration</filename>, <filename>booking</filename> and <filename>dvdstore</filename> would generate a <exceptionname>NullPointerException</exceptionname> during undeployment. In correcting this issue, the <filename>RootInterceptor.java</filename> file was updated to check if an applications context still active upon undeployment and deal with this appropriately.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>JBoss Hibernate</title>
+ <para>
+ <itemizedlist>
+ <important>
+ <para>
+ Hibernate Core has been updated to an enhanced 3.2.4.sp1.cp07 version. The following issues represent the changes for this version.
+ </para>
+ </important>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1628">JBPAPP-1628</ulink>: In an earlier fix to Hibernate the <methodname>org.hibernate.jdbc.AbstractBatcher#closeQueryStatement()</methodname> method was changed to check for the existance of the prepared statement in the <classname>statementsToClose</classname> collection instead of closing it unconditionally. This has now caused a properties leak as the <methodname>org.hibernate.persister.entity.AbstractEntityPersister#processGeneratedProperties()</methodname> used <methodname>org.hibernate.jdbc.AbstractBatcher#closeQueryStatement()</methodname> and the statement within <methodname>org.hibernate.persister.entity.AbstractEntityPersister#processGeneratedProperties()</methodname> is not added to the <classname>statementsToClose</classname> collection.
+ </para>
+ <para>
+ <filename>AbstractEntityPersister.java</filename> has been updated to execute a prepared statement on the result set and after calculating the <varname>propValue</varname> the result set is closed if it is not null; ensuring that no leak can occur.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1582">JBPAPP-1582</ulink>:
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1524">JBPAPP-1524</ulink>: The Sybase functions <methodname>second()</methodname>, <methodname>minute()</methodname>, <methodname>hour()</methodname> and <methodname>extract()</methodname> caused a <exceptionname>GenericJDBCException</exceptionname> when used. Moving these functions from the <filename>SQLServerDialect.java</filename> file to the <filename>SybaseDialect.java</filename> file allows for these functions to work correctly.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1519">JBPAPP-1519</ulink>: Sybase does not support the opperation <emphasis>on cascade delete</emphasis> while SQL Server does. To make sure that both opperate correctly the <filename>SQLServerDialect.java</filename> file has been updated to include a new <methodname>supportsCascadeDelete()</methodname> method which returns true and <filename>SybaseDialect.java</filename> has been updated to include a new <methodname>supportsCascadeDelete()</methodname> method which returns false.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1496">JBPAPP-1496</ulink>: A memory leak existed because of an unclosed <emphasis>ResultSet</emphasis> when using the <emphasis>Identity</emphasis> generator option. To close the memory leak, the <emphasis>ResultSet</emphasis> is checked to make sure it is closed before returning the generated itentity value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1480">JBPAPP-1480</ulink>: Hibernate would attempt to read from an invalid column in the collection result set when the following conditions were present:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Instances of a subclass were contained in a collection.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The subclasses were single-table and used a <join> (table-per-subclass with discriminator).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <join> portion of the subclass contained at least 3 of its own columns.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <join> tables were fetched by select and not the default method for this task.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ To fix this isue the <filename>AbstractEntityPersister.java</filename> file was updated so that the <varname>columnNumber</varname> variable is passed to the <methodname>subclassColumnSelectableClosure</methodname> method instead of an increment of the for loop variable <varname>i</varname>.
+ </para>
+ <para>
+ <filename>CollectionTest.java</filename> has also been updated and <filename>Animal.java</filename>, <filename>Mammal.java</filename>, <filename>Zoo.hbm.xml</filename> and <filename>Zoo.java</filename> have been added for testing purposes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1467">JBPAPP-1467</ulink>: A <exceptionname>PropertyValueException</exceptionname> would occur when merging a detached instance of a <classname>One</classname> class that contains a new <classname>Many</classname> class instance and if and only if the <classname>One</classname> class was previously loaded as a proxy during the same transaction. The files <filename>StatefulPersistenceContext.java</filename>, <filename>BackrefPropertyAccessor.java</filename>, <filename>BackrefTest.java</filename> and <filename>Child.java</filename> have been updated to check for the proxy issue in the mergining and once the proxy entity is found the <methodname>mergeMap</methodname> is updated to deal with this eventuality.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1365">JBPAPP-1365</ulink>: A bug existed within Hibernate Core where the <methodname>addDuplicateAlias</methodname> method would include an entry into the hash map even when the <varname>classAlias</varname> variable was set to null; causing a <exceptionname>NullPointerException</exceptionname> when the <methodname>CrazyJPARRequirements()</methodname> method is called. To correct this issue the <filename>FromClause.java</filename> file has been modified to correct the <methodname>addDuplicateAlias</methodname> method by testing if the <varname>alias</varname> variable is null and if it is not null then the <methodname>fromElementByClassAlias.put</methodname> is now called, instead of this method being called even if <varname>alias</varname> contained a null value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1259">JBPAPP-1259</ulink>: When using <methodname>dynamicUpdate</methodname> to generate SQL and the version field is specified by the user to not be updated, the <methodname>AbstractEntityPersiter.getPropertiesToUpdate</methodname> method would still update the field causing exceptions to appear in certain cases. Within this EAP update <filename>AbstractEntityPersister.java</filename> has been corrected to check if the user has expectly said that the version field should not be updated and does not update the field if this is the case.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1251">JBPAPP-1251</ulink>: Filters that were enabled for Hibernate did not apply to update and delete Hibernate Query Language (HQL) statements. In correcting this bug numerious files have been updated to ensure that the filters work correctly. This fix is related to JBPAPP-1250 below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1250">JBPAPP-1250</ulink>: When creating queries with subqueries in Hibernate, any added filters would only apply to the top-level of the query and not to any subquery component or beneath. The Criteria code and HQL code asociated with this has undergone significant re-tooling to allow filters to work appropriatly with subqueries and extent as far as the Hibernate Query Language does.
+ </para>
+ <para>
+ Though this is a significant fix to Hibernate, it has been included within this CP release because of its undeniable advantage to all users and ensures that filters on queries operate how a user would expect them to.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>Security Issues</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1548">JBPAPP-1548</ulink>: An exploit existed within the JBoss Web Services component of the EAP that would allow anyone to view any xml file from any location if <literal>&resource=path/of/an/xmlfile.xml</literal> was applied to the end of any WSDL (Web Services Definition Language) access URL. The <filename>WSDLRequestHandler.java</filename> file has been updated to only allow the parent of a WSDL file, a servers data or WSDL or overriden WSDL publish directories access to xml file resources. Additional test files are also included which were created to ensure proper opperation was being undertaken. (CVE-2009-0027 )
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>Documentation</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>Core Server</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1636">JBPAPP-1636</ulink>: When an adapter handled the scheduling of work to be performed, the <classname>ExecutionContext</classname> class contains a value in seconds, from which the <methodname>getCompletionTimeout</methodname> method of <classname>org.jboss.resource.work.WorkWrapper</classname> obtains its information. An issue arises with <methodname>getCompletionTimeout</methodname> expecting the value to be in milliseconds, creating an error where the initially set timeout value may be 6 seconds but be passed to the thread pool as 6 milliseconds. The <filename>WorkWrapper.java</filename> file has been updated and correctly converts the timeout value from seconds to milliseconds.
+ </para>
+ <important>
+ <para>
+ This bug only affected third party adapters running within the JBoss Application Server.
+ </para>
+ </important>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1635">JBPAPP-1635</ulink>: The <classname>OracleExceptionSorter</classname> has been enhanced for this release with new error codes of 17002 (connection reset) and 17008 (connection closed) now able to be handled. These enhancements have been applied to the <filename>OracleExceptionSorter.java</filename> file.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1602">JBPAPP-1602</ulink>: A <exceptionname>ConcurrentModificationException </exceptionname> would occur when a classloader would be undeployed while another user was attempting to load a class from the package. This error arose because the <classname>packagesMap</classname> within <classname>UnifiedLoaderRepository3</classname> had a <classname>TreeSet</classname> that was not correctly synchronized with changes. In order to rectify this, the <filename>ClassLoaderUtils.java</filename> file has been updated to import the <classname>Collections</classname> library and use the <methodname>synchronizedSet</methodname> method of the library in returning the <methodname>TreeSet</methodname> of the <methodname>newPackageSet</methodname> method.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1540">JBPAPP-1540</ulink>: Within the cluster section of the EAP, the <classname>GossipRouter</classname> and <classname>GossipClient</classname> (TCPGOSSIP) did not have socket read timeouts, socket linger timeouts and backlog set to provide the best behaviour when heavily utilized or under network situations in need of improvement. This fix provides default values and configuration options for these in order to avoid problematic situations.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1539">JBPAPP-1539</ulink>: When running parallel instances of the EAP on Linux a bug existed where messages between the JGroups component of each instance would be picked up by both because all messages sent to the port number for Multicast Sockets would be picked up by both instances. The issue has been fixed by re-writing the code for Multicast Sockets so that the constructor uses a group address along with the port number as identifiers. This ensures that an instance of the EAP only receives messages pertaining to its specific group and thus inhibits channel crosstalk.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1538">JBPAPP-1538</ulink>:The Probe Client had not been updated to use the same address as the Probe Listener does which is now 224.0.75.75. Correcting this issue, the Proble Client now uses 224.0.75.75 instead of 224.0.0.75 which allows the client and the listener to work together correctly.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1535">JBPAPP-1535</ulink>: The JDBCExtCacheLoader didn't handle persistent state transfter correctly since the <methodname>storeState</methodname> method would use avaliable space on the <classname>MarshalledValueInputStream</classname> instead of on the <classname>ByteArrayInputStream</classname>. To correct the stream usage, <filename>JDBCExtendedCacheLoader.java</filename> has been updated to store the new state using the <varname>in_stream</varname> value as long as there is space avaliable.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1534">JBPAPP-1534</ulink>: The JDBCCacheLoader didn't work with Sybase as it tried to set a null <varname>BLOB</varname> (Binary Large OBject) column which is unsupported in Sybase. To correct this the <filename>JDBCCacheLoader.java</filename> and <filename>AdjListJDBCCacheLoader.java</filename> files have been updated to select the Sybase Driver if Sybase is to be used, ensuring that null values are set as <varname>LONGVARBINARY</varname> rather than <varname>BLOB</varname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1532">JBPAPP-1532</ulink>: The JGroups clustering component of the EAP has been upgraded to version 2.4.5. A list of the included fixes is as follows:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The probe listener within JGroups still used the old default address of 224.0.0.75 instead of the new address of 224.0.75.75. The probe listener within JGroups has been updated with this release to use the correct default address.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The MPING protocol which sends a multicast ping over TCP contained cross-talk in Linux. the MPING protocol has since been corrected to eliminate cross-talk on the Linux platform.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A problem was encountered within JGroups when two distinct processes were setup on the same machine, each using a different stack with different UDP multicast addresses. The issue was that each process would not work correctly because of the other, as each process would receive incorrect datagrams in reference to the groups each joined. To correct this the <classname>MulticastSocket</classname> constructor is now used in combination with a <varname>SocketAddress</varname> when JGroups is used on the Linux platform.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>Gossip Router</literal> component of JGroups provided options to set <literal>backlog</literal>, <literal>socket read timeout</literal> and <literal>socket linger timeout</literal> within the code, however these options are not avaliable via the command line. This update of the JGroups component, now includes the availability of these options to be set through the command line.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Within the <literal>Gossip Router</literal> component of JGroups <methodname>Math.min</methodname> was used in calculating the socket linger timeout which caused incorrect results since this meant that the socket linger timeout would always be 1. <literal>Gossip Router</literal> has been updated to instead use <methodname>Math.max</methodname> in the calculation of the socket linger timeout.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>RouterStub</classname> and <classname>GossipRouter</classname> classes have the <varname>setSoLinger</varname> value set incorrectly to use a seconds value when <varname>setSoLinger</varname> uses millisecond values. This meant that a value of 500 was 500 seconds rather than 500 milliseconds. The <classname>RouterStub</classname> class has had its <varname>setSoLinger</varname> corrected and the <classname>GossipRouter</classname> class has had the <varname>setSoLinger</varname> value corrected and timouts configurable.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1530">JBPAPP-1530</ulink>: The JCA adapter inflow did not roll back messages if a non-xa connection factory was being used within the JNDIProviderAdapter. In order to fix this issue the <filename>JmsServerSession.java</filename> file has been updated with added logic to the local transaction seperation strategy as to allow for non-xa sessions to be rolled back using transaction session.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1521">JBPAPP-1521</ulink>: The <classname>CleanShutdownInterceptor</classname> class would log a <exceptionname>GenericClusteringException</exceptionname> when the container had failed to shut down correctly or failed to start correctly and because of this behavior the error message displayed because of the exception should be updated to indicate that it may be an issue with the container failing to start instead of only failing to shut down. In this latest EAP update, the error message has been updated to reflect both situations which may be the cause of the exception.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1458">JBPAPP-1458</ulink>: The JTA recovery configuration did not contain a line to enable JBoss Messaging (JBM) <classname>XAResourceRecovery</classname> even though it is stated in the JBM user guide. This CP release modifies the <filename>build-distr.xml</filename> file to all <classname>XAResourceRecovery</classname> to be enabled for JTA recovery.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1479">JBPAPP-1479</ulink>: Within the different distributions of the EAP that are 4.2 and 4.3, both the <filename>JBossMQ</filename> and <filename>JBoss Messaging</filename> application policies have been present within the <filename>login-config.xml</filename> file, when <filename>JBossMQ</filename> is only included in the 4.2 distribution and <filename>JBoss Messaging</filename> is similarly only included in the 4.3 distribution.
+ </para>
+ <para>
+ This has been rectified in this release by modifying <filename>build.xml</filename> and <filename>login-config.xml</filename> to differentiate between requirements for each individial distribution.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1473">JBPAPP-1473</ulink>: The <classname>IgnoreUndeployLegacyClusteredSessionNotificationPolicy</classname> within clustering didn't correctly call <classname>isHttpSessionListenerInvocationAllowed</classname>, which would lead to the repeated calling of itself and eventually <exceptionname>StackOverflow</exceptionname> errors. In order to correct this the <filename>IgnoreUndeployLegacyClusteredSessionNotificationPolicy.java</filename> file has been modified to correctly call <classname>isHttpSessionListenerInvocationAllowed</classname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1460">JBPAPP-1460</ulink>: The JavaServer Faces (JSF) has been updated to version 1.2_10 for this EAP release. This update corrects numerious bugs and details on these fixes can be found at <ulink url="https://javaserverfaces.dev.java.net/nonav/rlnotes/1.2_10/changelog.html">https://javaserverfaces.dev.java.net/nonav/rlnotes/1.2_10/changelog.html</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1366">JBPAPP-1366</ulink>: Creation of the EJB <filename>TIMERS</filename> table fails when the <option>Oracle</option> schema is specified. To correct this the <filename>GeneralPurposeDatabasePersistencePlugin.java</filename> file has been updated with a calling to an new <methodname>SQLUtil.fixConstraintName</methodname> function which changes all dots in a constraint name to underscores. This ensures that constraint names are compatable with Oracle.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1307">JBPAPP-1307</ulink>: The Persistence Unit (PU) root was incorrectly detected within deployments that contained nested <filename>.jar</filename> files. The root PU was being detected as the first nested <filename>.jar</filename> encountered instead of being the deployment which contains the <filename>persistence.xml</filename> file. To make sure that the PU root is always set correctly, the <filename>JmxDeploymentUnit.java</filename> file has been updated with the removal of testing for the url being null and the <parameter>deploymentInfo.parent</parameter> not being null. This means that the url is now always taken straight from the <parameter>extractDescriptorUrl</parameter> of <filename>META-INF/persistence.xml</filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1289">JBPAPP-1289</ulink>: The JBoss JAXR component of the EAP has been upgraded to version 1.2.0.SP2. A list of the included fixes is as follows:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ In the <filename>org.jboss.jaxr.juddi.JUDDIServlet</filename> and <filename>org.jboss.jaxr.juddi.transport.SaajTransport</filename> files the namespace value for <varname>xml:lang</varname> contained <literal>http://www.w3.org/TR/REC-xml/</literal>, which caused an exception within the metro stack. The namespace value should instead be null and this has been applied for this JAXR update.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1275">JBPAPP-1275</ulink>: The Xalan part of the EAP has been upgraded from version 2.7.0 to 2.7.0.patch02. This upgrade removes the circumstance where an application which heavily used Xalan within large multi-threaded environments would encounter blocking situatinos.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1267">JBPAPP-1267</ulink>: <classname>UserTransaction</classname> (UT) was not able to be deployed with a clustered proxy that supported sticky transactions correctly. This has been fixed by modifying numerious files which make <classname>UserTransaction</classname> deployable with transaction sticky load balance policies.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1249">JBPAPP-1249</ulink>: The JSF component of the EAP has been upgraded to version 1.2_10. A list of the included fixes is as follows:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ A mixed EL expression ending with a literal failed to parse as a managed bean property value. The <filename>BeanBuilder.java</filename> file was updarted with the removal of <code>ELUtils.getScope(this.expressionString, segment);</code> in order to fix this issue.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <methodname>LifecycleImpl</methodname> and <methodname>RestoreViewPhase</methodname> forced the <methodname>responseComplete()</methodname> method for the status of an existing view. To correct this problem the <filename>RestoreViewPhase.java</filename> file has been edited with the code <code>facesContext.responseComplete();</code> removed and replaced with <code>facesContext.renderResponse();</code>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ For a <h:dataTable> tag which does not set the <varname>var</varname> attribute, if the UIData component is created using a binding and calls the <methodname>setVar()</methodname> method to set the <varname>var</varname> attribute, it would be overwritten as a null value by the <h:dataTable> tag. This bug has been fixed by modifying the <filename>HtmlTaglib21Generator.java</filename> file so that component properties are not set if the tag attribute has not been set.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>BindingValidator</classname> would generate a <exceptionname>ConverterException</exceptionname> instead of a <exceptionname>ValidatorException</exceptionname>. For this update, <classname>BindingValidator</classname> has been modified to generate the correct exception; <exceptionname>ValidatorException</exceptionname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The cause of a <classname>PostConstruct</classname> exception within the <classname>BeanBuilder</classname> was not communicated to the user correctly. To correct the issue so that no information is hidden from the user, the <exceptionname>ManagedBeanCreationException</exceptionname> has been updated to provide more information about the cause of the exception.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ An issue was present that would cause majarra to execute <filename>faces-config.xml </filename> initialization files twice, creating duplicate operations. This was caused since a record was not kept of which files had been intialized and which had not. File initialization tracking has been implemented to correct this issue and this has seen the modification of the following files: <filename>ConfigManager.java</filename>, <filename>ConfigureListener.java</filename>, <filename>WebConfiguration.java</filename>, <filename>ConfigurationResourceProvider.java</filename>, <filename>MetaInfResourceProvider.java</filename>, <filename>RIConfigResourceProvider.java</filename> and <filename>WebResourceProvider.java</filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>com.sun.faces.renderkit.ApplicationObjectInputStream</classname> extends the functionality of <classname>java.io.ObjectInputStream</classname> but failed to preserve the functionality as <classname>com.sun.faces.renderkit.ApplicationObjectInputStream</classname> would fail when primitives were used, unlike the <classname>java.io.ObjectInputStream</classname> class which contains a special case to handle such a case. This would cause problems for <literal>UIComponents</literal>. <filename>ApplicationObjectInputStream.java</filename> has been updated to explicitly handle primitive cases and catch the <exceptionname>ClassNotFoundException</exceptionname> which may be generated.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <classname>com.sun.faces.renderkit.html_basic.OutputLinkRenderer</classname> did not encode parameters correctly, missing the <literal>URLEncoding</literal>. <literal>URLEncoding</literal> has been added, correcting this bug, along with the parameter names.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>com.sun.faces.renderkit.html_basic.BaseTableRenderer</classname> did not allow for empty <varname>columnClasses</varname> when generating columns from user unput. The issue was realizing when to create numerious columns rather just one; for instance if the user input <literal>foo, </literal> with a trailing space then the expected output would be one column with the name <literal>foo</literal> and another empty column. This was not the case though, as <literal>foo, </literal> would generate just one column with <literal>foo, </literal> in its entirety as the column name, instead of spliting the columns on the comma. This behaviour has now been corrected so that <classname>com.sun.faces.renderkit.html_basic.BaseTableRenderer</classname> no generates columns correctly, and in order to achieve this the following files have been updated: <filename>BasetableRenderer.java</filename>, <filename>GridRenderer.java</filename> and <filename>TableRenderer.java</!
filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>com.sun.faces.renderkit.html_basic.MenuRenderer</classname> class did not correctly differentiate between <literal>Objects</literal>; for instance the different between <literal>Boolean</literal> and <literal>boolean</literal>, noting the capitalization of the first. The error was with the logic in <classname>UISelect</classname> and <classname>MenuRenderer</classname>. To correct this, proper use of the converter for these classes has been implemented to deal with Objects correctly.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <classname>com.sun.faces.lifecycle.RestoreViewPhase</classname> called <methodname>DebugUtil.printTree</methodname> after restoring the view if debugging was enabled, causing incorrect initialization of calls when a listbox is being used and returning an incorrect value in the <classname>RenderResponse</classname> phase. Method calls have been restructured with the removal of references to the <methodname>DebugUtil.printTree()</methodname> method from <filename>ViewHandlerImpl.java</filename> and <filename>RestoreViewPhase.java</filename> and <filename>RenderResponsePhase.java</filename> has been modified to call <methodname>DebugUtil.printTree</methodname> (if <varname>FINEST</varname> logging is enabled) at the end of the <classname>RenderResponse</classname> phase, fixing the issue (with the above changes also) and providing a more accurate view of the tree. </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>CGLIB Enhanced UIComponents</literal> in a component tree would return a value of null for their class when calling <methodname>getPackage()</methodname> causing <classname>HtmlInputText.handleAttribute</classname> to fail as it relies on a not-nulll value. This issue has been corrected by ignoring a returned value of null from the <methodname>getPackage()</methodname> method for every instance in the codebase.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <classname>UIComponentBase</classname> did not allow for the children of a tree to be iterated through in reverse order using a list iterator as it would produce an <exceptionname>IndexOutOfBoundsException</exceptionname> when the execution tries to calculate the size of the children. <methodname>ChildrenListIterator</methodname> method has been modified within the <classname>UIComponentBase</classname> class by changing the line of code <code>if ((index < 0) || (index >= list.size())) { </code> to <code>if ((index < 0) || (index > list.size())) {</code>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Renderer kits for <filename>faces-config.xml</filename> were processed out of order depending on if <literal>ICEfaces</literal> or <literal>Mojara 1.2_09</literal> is in use. This occured due to containing all renderer DOM nods in a list associated with a namespace. This was done so that the renderer nodes could then be processed prior to the <literal>RenderKits</literal> being created and the nodes could be processed using the proper namespace. However, by placing all the renderers into this list, we lost the document ordering. The issue has been fixed by associating the renderer nodes with their owning document and processed in the parsing order.
+
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <methodname>Class.getPackage()</methodname> method calls to synchronized methods, inhibiting scalability if the method has to be repeatedly executed. Use of the <methodname>Class.getPackage()</methodname> method has now been removed from <filename>UIComponent.java</filename>, <filename>RenderKitUtils.java</filename> and <filename>HtmlComponentGenerator.java</filename>. Instead, the class name is now checked if it starts with the package name that is of interest, <classname>javax.faces.component.</classname>. This includes the components that are generated by the <classname>HtmlComponentGenerator</classname> since they are packaged in <classname>javax.faces.component.html</classname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A bug presented itself in the <classname>RenderKitUtils</classname> class when a semicolon (<code>;</code>) followed a forward-slash (<code>/</code>) in a header Accept value (for instance: <code>text/;q=0.5</code>). To rectify this issue the <classname>RenderKitUtils</classname> class has been updated to assume <code>*</code> as the subtype for an Accept header that contains no subtype.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1224">JBPAPP-1224</ulink>: Attribute default values in EJB were not set when in use with <literal>@Service</literal> and <literal>XMBean XML</literal> . In order to correct this the behavior has been re-written to improve the mimicking of <classname>ServerCreator</classname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1170">JBPAPP-1170</ulink>: When the <methodname>getMBeanInfo</methodname> method is called within <classname>MBeanServerImpl</classname> and <classname>RawDynamicInvoker</classname>, the underlying exception to <exceptionname>NotCompliantMBeanException</exceptionname> is not expressed to the user. <filename>RawDynamicInvoker.java</filename> has now been updated to provide this useful information to the user.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1099">JBPAPP-1099</ulink>: The <filename>commons-beanutils.jar</filename> file within the EAP had the incorrect version in the <filename>manifest.mf</filename> file. Through the course of correcting this bug, it was found that the <literal>beanutils</literal> component was outdated and a newer version contained manu advantages. In this update to the EAP <literal>beanutils</literal> has been upgraded to version 1.8.0, which sees the significant improvement that fixes a memory leak caused by a circular reference concerning the <classname>WeakHashMap</classname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1002">JBPAPP-1002</ulink>: Bean Managed Transactions (BMT) Stateful Session Beans used to be logged when transactions were not completed between invocations. However this was an error as BMT Stateful Session Beans are allowed to have this occurance and so this logging measure has been removed in this EAP update.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-996">JBPAPP-996</ulink>: Discrepancies existed between the port schemes within the <filename>sample-bindings.xml</filename> file. These include:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The remoting connectors were inserted in different places within the ports definition sections, making the comparison of the sections more difficult than was necessary.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>ports-03</literal> section was missing the <literal>EJB remoting connector</literal> and the <literal>remoting connector</literal> sections.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>mq</literal> was used in the name property of the <varname>HAJNDIJMSProvider</varname> instead of <literal>jms</literal>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>ports-01</literal>, <literal>ports-02</literal>, and <literal>ports-03</literal> schemes defined the <varname>timeout</varname> attribute twice in the <literal>JBoss Messaging</literal> section:
+
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The above issues have been fixed appropriately in this update.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-713">JBPAPP-713</ulink>: A Classloader leak existed causing a <errorname>OutOfMemoryError: PermGen</errorname> error. To correct this issue the EAP now uses <filename>beanutils 1.8.0</filename> which fixes this <errorname>OutOfMemoryError</errorname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-529">JBPAPP-529</ulink>: JMX source code was being exposed to the user when a <exceptionname>HTTP Status 500</exceptionname> exception would occur. To correct this, an error page <filename>genericError.jsp</filename> has been created and is now displayed whenever a <exceptionname>HTTP Status 500</exceptionname> exception occurs.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ </section>
+ <section id="Known_Issues_with_this_release">
+ <title>
+ Known Issues with this release
+ </title>
+ <para>
+ Following is a list of known issues at the time of release.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-1286">JBPAPP-1286</ulink>: Footnotes within documentation tables and lists do not appear within PDFs. This issue resides within FOP and currently no workaround exists. Where possible footnotes are not used in the circumstances mentioned, however in documents such as the Release Notes the web address of a JIRA is automaticly generated as a footnote and places a number beside that of the JIRA, referencing a footnote that does not appear.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-909">JBPAPP-909</ulink>: Within the Hibernate component of the EAP the HashMap and HashSet iteration order changed from past releases because of support for JDK 1.6. However this has meant that the order of columns in union clauses and union-subclasses has changed, generating a slight impact on the components performance.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://jira.jboss.com/jira/browse/JBPAPP-885">JBPAPP-885</ulink>: An issue exists where if <methodname>DefaultRedeliveryDelay</methodname> or <methodname>RedeliveryDelay</methodname> is set to a value apart from zero, messages will not be redelivered even though the method <methodname>session.rollback()</methodname> had been called. This issue will not be fixed because redelivery delay is handled on the server side and the message is already acknowledged before delivery of the message with a non durable subscription. For the Enterprise Application Platform, this means that redelivery delays with non durable subscriptions cannot be supported.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+-->
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+
+</article>
Added: docs/enterprise/trunk/Read_Me/en-US/Revision_History.xml
===================================================================
--- docs/enterprise/trunk/Read_Me/en-US/Revision_History.xml (rev 0)
+++ docs/enterprise/trunk/Read_Me/en-US/Revision_History.xml 2009-01-27 10:51:17 UTC (rev 12656)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+ <title>Revision History</title>
+ <simpara>
+ <revhistory>
+ <revision>
+ <revnumber>1.0</revnumber>
+ <date></date>
+ <author>
+ <firstname></firstname>
+ <surname></surname>
+ <email></email>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member></member>
+ </simplelist>
+ </revdescription>
+ </revision>
+ </revhistory>
+ </simpara>
+</appendix>
+
Added: docs/enterprise/trunk/Read_Me/en-US/images/icon.svg
===================================================================
--- docs/enterprise/trunk/Read_Me/en-US/images/icon.svg (rev 0)
+++ docs/enterprise/trunk/Read_Me/en-US/images/icon.svg 2009-01-27 10:51:17 UTC (rev 12656)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+ xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="32"
+ height="32"
+ id="svg3017"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ sodipodi:docname="book.svg"
+ sodipodi:docbase="/home/andy/Desktop">
+ <metadata
+ id="metadata489">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ inkscape:window-height="480"
+ inkscape:window-width="858"
+ inkscape:pageshadow="0"
+ inkscape:pageopacity="0.0"
+ guidetolerance="10.0"
+ gridtolerance="10.0"
+ objecttolerance="10.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ inkscape:zoom="1"
+ inkscape:cx="16"
+ inkscape:cy="15.944056"
+ inkscape:window-x="0"
+ inkscape:window-y="33"
+ inkscape:current-layer="svg3017" />
+ <defs
+ id="defs3019">
+ <linearGradient
+ id="linearGradient2381">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop2383" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="stop2385" />
+ </linearGradient>
+ <linearGradient
+ x1="415.73831"
+ y1="11.854"
+ x2="418.13361"
+ y2="18.8104"
+ id="XMLID_1758_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="0"
+ id="stop3903" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop3905" />
+ <a:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="500.70749"
+ y1="-13.2441"
+ x2="513.46442"
+ y2="-2.1547"
+ id="XMLID_1757_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop3890" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop3892" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="XMLID_1755_">
+ <use
+ id="use3874"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_343_" />
+ </clipPath>
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop3877" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop3879" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop3881" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop3883" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="471.0806"
+ y1="201.07761"
+ x2="481.91711"
+ y2="210.4977"
+ id="XMLID_1754_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#6498c1;stop-opacity:1"
+ offset="0.005618"
+ id="stop3863" />
+ <stop
+ style="stop-color:#79a9cc;stop-opacity:1"
+ offset="0.2332"
+ id="stop3865" />
+ <stop
+ style="stop-color:#a4cde2;stop-opacity:1"
+ offset="0.74049997"
+ id="stop3867" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="1"
+ id="stop3869" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="5.618000e-003" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="0.4438" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="XMLID_1753_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop3851" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop3853" />
+ <a:midPointStop
+ style="stop-color:#B2B2B2"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B2B2B2"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="XMLID_1751_">
+ <use
+ id="use3837"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_338_" />
+ </clipPath>
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop3840" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop3842" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop3844" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop3846" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="468.2915"
+ y1="204.7612"
+ x2="479.39871"
+ y2="214.4166"
+ id="XMLID_1750_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop3830" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop3832" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop3818" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop3820" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="501.0903"
+ y1="-19.2544"
+ x2="531.85413"
+ y2="0.72390002"
+ id="XMLID_1748_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop3803" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop3805" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop3807" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop3809" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="XMLID_2275_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop9947" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop9949" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop9951" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop9953" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="XMLID_2273_">
+ <use
+ id="use9933"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_960_" />
+ </clipPath>
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="XMLID_2274_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop9936" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop9938" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop9940" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop9942" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="478.21341"
+ y1="-131.9297"
+ x2="469.85818"
+ y2="-140.28481"
+ id="XMLID_2272_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop9917" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop9919" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop9921" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop9923" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ style="overflow:visible"
+ id="TriangleInM">
+ <path
+ d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+ transform="scale(-0.4,-0.4)"
+ style="fill:#5c5c4f"
+ id="path3197" />
+ </marker>
+ <linearGradient
+ x1="200.7363"
+ y1="100.4028"
+ x2="211.99519"
+ y2="89.143997"
+ id="XMLID_3298_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#bfbfbf;stop-opacity:1"
+ offset="0"
+ id="stop20103" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop20105" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#BFBFBF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#BFBFBF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#F2F2F2" />
+ </linearGradient>
+ <linearGradient
+ x1="200.7363"
+ y1="100.4028"
+ x2="211.99519"
+ y2="89.143997"
+ id="linearGradient36592"
+ xlink:href="#XMLID_3298_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="181.2925"
+ y1="110.8481"
+ x2="192.6369"
+ y2="99.5037"
+ id="XMLID_3297_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="stop20096" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop20098" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="181.2925"
+ y1="110.8481"
+ x2="192.6369"
+ y2="99.5037"
+ id="linearGradient36595"
+ xlink:href="#XMLID_3297_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="211.77589"
+ y1="105.7749"
+ x2="212.6619"
+ y2="108.2092"
+ id="XMLID_3296_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#0f6124;stop-opacity:1"
+ offset="0"
+ id="stop20087" />
+ <stop
+ style="stop-color:#219630;stop-opacity:1"
+ offset="1"
+ id="stop20089" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#0F6124" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#0F6124" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#219630" />
+ </linearGradient>
+ <linearGradient
+ x1="211.77589"
+ y1="105.7749"
+ x2="212.6619"
+ y2="108.2092"
+ id="linearGradient36677"
+ xlink:href="#XMLID_3296_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="208.9834"
+ y1="116.8296"
+ x2="200.0811"
+ y2="96.834602"
+ id="XMLID_3295_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop20076" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.5"
+ id="stop20078" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop20080" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="208.9834"
+ y1="116.8296"
+ x2="200.0811"
+ y2="96.834602"
+ id="linearGradient36604"
+ xlink:href="#XMLID_3295_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="195.5264"
+ y1="97.911102"
+ x2="213.5213"
+ y2="115.9061"
+ id="XMLID_3294_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="0"
+ id="stop20069" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop20071" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="195.5264"
+ y1="97.911102"
+ x2="213.5213"
+ y2="115.9061"
+ id="linearGradient36607"
+ xlink:href="#XMLID_3294_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="186.1938"
+ y1="109.1343"
+ x2="206.6881"
+ y2="88.639999"
+ id="XMLID_3293_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop20056" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.16850001"
+ id="stop20058" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.23029999"
+ id="stop20060" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.2809"
+ id="stop20062" />
+ <stop
+ style="stop-color:#c2c2c2;stop-opacity:1"
+ offset="0.5"
+ id="stop20064" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.1685"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.2303"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.2809"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#C2C2C2" />
+ </linearGradient>
+ <linearGradient
+ x1="186.1938"
+ y1="109.1343"
+ x2="206.6881"
+ y2="88.639999"
+ id="linearGradient36610"
+ xlink:href="#XMLID_3293_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="184.8569"
+ y1="112.2676"
+ x2="211.94099"
+ y2="89.541397"
+ id="XMLID_3292_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop20043" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.16850001"
+ id="stop20045" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.23029999"
+ id="stop20047" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.2809"
+ id="stop20049" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop20051" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.1685"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.2303"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.2809"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="184.8569"
+ y1="112.2676"
+ x2="211.94099"
+ y2="89.541397"
+ id="linearGradient36613"
+ xlink:href="#XMLID_3292_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ style="overflow:visible"
+ id="TriangleOutM">
+ <path
+ d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+ transform="scale(0.4,0.4)"
+ style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+ id="path3238" />
+ </marker>
+ <linearGradient
+ x1="165.3"
+ y1="99.5"
+ x2="165.3"
+ y2="115.9"
+ id="XMLID_3457_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="0"
+ id="stop8309" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8311" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="1"
+ id="stop8313" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#999999" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#999999" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#B2B2B2" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#B2B2B2" />
+ </linearGradient>
+ <linearGradient
+ x1="165.3"
+ y1="99.5"
+ x2="165.3"
+ y2="115.9"
+ id="lg1997"
+ xlink:href="#XMLID_3457_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="175"
+ y1="99.800003"
+ x2="175"
+ y2="112.5"
+ id="XMLID_3456_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="0"
+ id="stop8300" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="0.60000002"
+ id="stop8302" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="1"
+ id="stop8304" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="0.6"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#191919" />
+ </linearGradient>
+ <linearGradient
+ x1="175"
+ y1="99.800003"
+ x2="175"
+ y2="112.5"
+ id="lg2000"
+ xlink:href="#XMLID_3456_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="168.8"
+ y1="107.1"
+ x2="164.5"
+ y2="110"
+ id="XMLID_3455_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="0"
+ id="stop8291" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="0.69999999"
+ id="stop8293" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="1"
+ id="stop8295" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.7"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#191919" />
+ </linearGradient>
+ <linearGradient
+ x1="168.8"
+ y1="107.1"
+ x2="164.5"
+ y2="110"
+ id="lg2003"
+ xlink:href="#XMLID_3455_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ id="lg63694">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop63696" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="stop63698" />
+ </linearGradient>
+ <linearGradient
+ x1="458"
+ y1="483"
+ x2="465.20001"
+ y2="271.39999"
+ id="lg2006"
+ xlink:href="#lg63694"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+ <linearGradient
+ x1="176.3"
+ y1="110.1"
+ x2="158.7"
+ y2="105"
+ id="XMLID_3453_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="0"
+ id="stop8271" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="0.2"
+ id="stop8273" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop8275" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.2"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="176.3"
+ y1="110.1"
+ x2="158.7"
+ y2="105"
+ id="lg2009"
+ xlink:href="#XMLID_3453_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="173.60001"
+ y1="118.9"
+ x2="172.8"
+ y2="128.2"
+ id="XMLID_3449_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8232" />
+ <stop
+ style="stop-color:#fff95e;stop-opacity:1"
+ offset="0.60000002"
+ id="stop8234" />
+ <stop
+ style="stop-color:#ecd600;stop-opacity:1"
+ offset="1"
+ id="stop8236" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.6"
+ style="stop-color:#FFF95E" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFF95E" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#ECD600" />
+ </linearGradient>
+ <linearGradient
+ x1="173.60001"
+ y1="118.9"
+ x2="172.8"
+ y2="128.2"
+ id="lg2016"
+ xlink:href="#XMLID_3449_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <radialGradient
+ cx="284.60001"
+ cy="172.60001"
+ r="6.5"
+ fx="284.60001"
+ fy="172.60001"
+ id="XMLID_3448_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8219" />
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8221" />
+ <stop
+ style="stop-color:#c96b00;stop-opacity:1"
+ offset="0.89999998"
+ id="stop8223" />
+ <stop
+ style="stop-color:#9a5500;stop-opacity:1"
+ offset="1"
+ id="stop8225" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.9"
+ style="stop-color:#C96B00" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#C96B00" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#9A5500" />
+ </radialGradient>
+ <radialGradient
+ cx="284.60001"
+ cy="172.60001"
+ r="6.5"
+ fx="284.60001"
+ fy="172.60001"
+ id="rg2020"
+ xlink:href="#XMLID_3448_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+ <linearGradient
+ x1="158.10001"
+ y1="123"
+ x2="164.2"
+ y2="126.6"
+ id="XMLID_3447_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecd600;stop-opacity:1"
+ offset="0"
+ id="stop8204" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8206" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop8208" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECD600" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECD600" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="158.10001"
+ y1="123"
+ x2="164.2"
+ y2="126.6"
+ id="lg2026"
+ xlink:href="#XMLID_3447_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <radialGradient
+ cx="280.89999"
+ cy="163.7"
+ r="10.1"
+ fx="280.89999"
+ fy="163.7"
+ id="XMLID_3446_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop8197" />
+ <stop
+ style="stop-color:#fff95e;stop-opacity:1"
+ offset="1"
+ id="stop8199" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#FFFFFF" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#FFF95E" />
+ </radialGradient>
+ <radialGradient
+ cx="280.89999"
+ cy="163.7"
+ r="10.1"
+ fx="280.89999"
+ fy="163.7"
+ id="rg2029"
+ xlink:href="#XMLID_3446_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+ <linearGradient
+ x1="156.5"
+ y1="122.7"
+ x2="180.10001"
+ y2="122.7"
+ id="XMLID_3445_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8184" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.2"
+ id="stop8186" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8188" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.40000001"
+ id="stop8190" />
+ <stop
+ style="stop-color:#d68100;stop-opacity:1"
+ offset="1"
+ id="stop8192" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.2"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.4"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#D68100" />
+ </linearGradient>
+ <linearGradient
+ x1="156.5"
+ y1="122.7"
+ x2="180.10001"
+ y2="122.7"
+ id="lg2032"
+ xlink:href="#XMLID_3445_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="156.39999"
+ y1="115.4"
+ x2="180.10001"
+ y2="115.4"
+ id="XMLID_3444_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8171" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.2"
+ id="stop8173" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8175" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.40000001"
+ id="stop8177" />
+ <stop
+ style="stop-color:#d68100;stop-opacity:1"
+ offset="1"
+ id="stop8179" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.2"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.4"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#D68100" />
+ </linearGradient>
+ <linearGradient
+ x1="156.39999"
+ y1="115.4"
+ x2="180.10001"
+ y2="115.4"
+ id="lg2035"
+ xlink:href="#XMLID_3444_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="379.70001"
+ y1="167.89999"
+ x2="383.89999"
+ y2="172.89999"
+ id="lg4286_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s16159" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.1"
+ id="s16161" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="1"
+ id="s16163" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.1" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#737373"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="379.60001"
+ y1="167.8"
+ x2="383.79999"
+ y2="172"
+ id="lg6416"
+ xlink:href="#lg4286_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+ <linearGradient
+ x1="384.20001"
+ y1="169.8"
+ x2="384.79999"
+ y2="170.39999"
+ id="lg4285_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="0"
+ id="s16152" />
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="1"
+ id="s16154" />
+ <ns:midPointStop
+ style="stop-color:#737373"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#737373"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#D9D9D9"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="384.20001"
+ y1="169.8"
+ x2="384.79999"
+ y2="170.39999"
+ id="lg6453"
+ xlink:href="#lg4285_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+ <linearGradient
+ x1="380.5"
+ y1="172.60001"
+ x2="382.79999"
+ y2="173.7"
+ id="lg4284_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+ <stop
+ style="stop-color:gray;stop-opacity:1"
+ offset="0"
+ id="s16145" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="1"
+ id="s16147" />
+ <ns:midPointStop
+ style="stop-color:#808080"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#808080"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#E5E5E5"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="380.5"
+ y1="172.60001"
+ x2="382.79999"
+ y2="173.7"
+ id="lg6456"
+ xlink:href="#lg4284_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+ <radialGradient
+ cx="347.29999"
+ cy="244.5"
+ r="5.1999998"
+ fx="347.29999"
+ fy="244.5"
+ id="lg4282_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+ <stop
+ style="stop-color:#333;stop-opacity:1"
+ offset="0"
+ id="s16135" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="s16137" />
+ <ns:midPointStop
+ style="stop-color:#333333"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#333333"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#999999"
+ offset="1" />
+ </radialGradient>
+ <linearGradient
+ x1="310.39999"
+ y1="397.70001"
+ x2="310.89999"
+ y2="399.5"
+ id="lg4280_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="0"
+ id="s16111" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.60000002"
+ id="s16113" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="1"
+ id="s16115" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.6" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="310.39999"
+ y1="397.70001"
+ x2="310.89999"
+ y2="399.5"
+ id="lg6467"
+ xlink:href="#lg4280_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+ <linearGradient
+ x1="310.89999"
+ y1="395.79999"
+ x2="313.29999"
+ y2="403.10001"
+ id="lg4279_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0"
+ id="s16100" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.40000001"
+ id="s16102" />
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="0.89999998"
+ id="s16104" />
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="1"
+ id="s16106" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.4" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0.9" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="310.89999"
+ y1="395.79999"
+ x2="313.29999"
+ y2="403.10001"
+ id="lg6465"
+ xlink:href="#lg4279_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+ <linearGradient
+ x1="307.79999"
+ y1="395.20001"
+ x2="313.79999"
+ y2="413.60001"
+ id="lg4278_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0"
+ id="s16091" />
+ <stop
+ style="stop-color:#fcd72f;stop-opacity:1"
+ offset="0.40000001"
+ id="s16093" />
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="1"
+ id="s16095" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FCD72F"
+ offset="0.4" />
+ <ns:midPointStop
+ style="stop-color:#FCD72F"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="306.5"
+ y1="393"
+ x2="309"
+ y2="404"
+ id="lg6400"
+ xlink:href="#lg4278_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+ <linearGradient
+ x1="352.10001"
+ y1="253.60001"
+ x2="348.5"
+ y2="237.8"
+ id="lg4276_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+ <stop
+ style="stop-color:#ffff87;stop-opacity:1"
+ offset="0"
+ id="s16077" />
+ <stop
+ style="stop-color:#ffad00;stop-opacity:1"
+ offset="1"
+ id="s16079" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFAD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="335.60001"
+ y1="354.79999"
+ x2="337.89999"
+ y2="354.79999"
+ id="lg4275_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="s16057" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.80000001"
+ id="s16059" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="s16061" />
+ <ns:midPointStop
+ style="stop-color:#D9D9D9"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#D9D9D9"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.8" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="335.60001"
+ y1="354.79999"
+ x2="337.89999"
+ y2="354.79999"
+ id="lg6463"
+ xlink:href="#lg4275_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+ <linearGradient
+ x1="337.39999"
+ y1="353.10001"
+ x2="339.39999"
+ y2="357.10001"
+ id="lg4274_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s16048" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.1"
+ id="s16050" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s16052" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.1" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="337.39999"
+ y1="353.10001"
+ x2="339.39999"
+ y2="357.10001"
+ id="lg6461"
+ xlink:href="#lg4274_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+ <linearGradient
+ x1="334.39999"
+ y1="355.5"
+ x2="335.5"
+ y2="356.79999"
+ id="lg4273_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s16041" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s16043" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="5.6e-003" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="334.39999"
+ y1="355.5"
+ x2="335.5"
+ y2="356.79999"
+ id="lg6381"
+ xlink:href="#lg4273_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+ <linearGradient
+ x1="348.39999"
+ y1="247.39999"
+ x2="354.10001"
+ y2="242"
+ id="lg4271_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0"
+ id="s16025" />
+ <stop
+ style="stop-color:#9e9e9e;stop-opacity:1"
+ offset="0.40000001"
+ id="s16027" />
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="1"
+ id="s16029" />
+ <ns:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#000000"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="351.29999"
+ y1="257.29999"
+ x2="346.29999"
+ y2="235.5"
+ id="lg4270_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ffff87;stop-opacity:1"
+ offset="0"
+ id="s16007" />
+ <stop
+ style="stop-color:#ffad00;stop-opacity:1"
+ offset="1"
+ id="s16009" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFAD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="351.29999"
+ y1="257.29999"
+ x2="346.29999"
+ y2="235.5"
+ id="lg6459"
+ xlink:href="#lg4270_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+ <linearGradient
+ x1="43.799999"
+ y1="32.5"
+ x2="63.299999"
+ y2="66.400002"
+ id="XMLID_2708_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop75318" />
+ <stop
+ style="stop-color:#fffcea;stop-opacity:1"
+ offset="1"
+ id="stop75320" />
+ <a:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#FFFCEA"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="43.799999"
+ y1="32.5"
+ x2="63.299999"
+ y2="66.400002"
+ id="lg1907"
+ xlink:href="#XMLID_2708_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)" />
+ <linearGradient
+ x1="52.5"
+ y1="40.400002"
+ x2="58.200001"
+ y2="64"
+ id="XMLID_2707_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ffdea0;stop-opacity:1"
+ offset="0"
+ id="stop75305" />
+ <stop
+ style="stop-color:#ffd89e;stop-opacity:1"
+ offset="0.30000001"
+ id="stop75307" />
+ <stop
+ style="stop-color:#ffd79e;stop-opacity:1"
+ offset="0.30000001"
+ id="stop75309" />
+ <stop
+ style="stop-color:#dbaf6d;stop-opacity:1"
+ offset="0.69999999"
+ id="stop75311" />
+ <stop
+ style="stop-color:#6f4c24;stop-opacity:1"
+ offset="1"
+ id="stop75313" />
+ <a:midPointStop
+ style="stop-color:#FFDEA0"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#FFDEA0"
+ offset="0.6" />
+ <a:midPointStop
+ style="stop-color:#FFD79E"
+ offset="0.3" />
+ <a:midPointStop
+ style="stop-color:#FFD79E"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#DBAF6D"
+ offset="0.7" />
+ <a:midPointStop
+ style="stop-color:#DBAF6D"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#6F4C24"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="52.5"
+ y1="40.400002"
+ x2="58.200001"
+ y2="64"
+ id="lg1910"
+ xlink:href="#XMLID_2707_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)" />
+ <linearGradient
+ x1="58"
+ y1="73.199997"
+ x2="44.5"
+ y2="19"
+ id="XMLID_2704_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)">
+ <stop
+ style="stop-color:#d4a96c;stop-opacity:1"
+ offset="0.5"
+ id="stop75284" />
+ <stop
+ style="stop-color:#dcb273;stop-opacity:1"
+ offset="0.60000002"
+ id="stop75286" />
+ <stop
+ style="stop-color:#f0ca87;stop-opacity:1"
+ offset="0.80000001"
+ id="stop75288" />
+ <stop
+ style="stop-color:#ffdc96;stop-opacity:1"
+ offset="0.69999999"
+ id="stop75290" />
+ <stop
+ style="stop-color:#c18a42;stop-opacity:1"
+ offset="1"
+ id="stop75292" />
+ <a:midPointStop
+ style="stop-color:#D4A96C"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#D4A96C"
+ offset="0.6" />
+ <a:midPointStop
+ style="stop-color:#FFDC96"
+ offset="0.7" />
+ <a:midPointStop
+ style="stop-color:#FFDC96"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#C18A42"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="53.700001"
+ y1="32"
+ x2="53.700001"
+ y2="64.599998"
+ id="XMLID_2703_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e5c9b0;stop-opacity:1"
+ offset="0"
+ id="stop75268" />
+ <stop
+ style="stop-color:#e5c9b0;stop-opacity:1"
+ offset="0.40000001"
+ id="stop75270" />
+ <stop
+ style="stop-color:#c0aa94;stop-opacity:1"
+ offset="1"
+ id="stop75272" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0.4" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#C0AA94"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="53.700001"
+ y1="32"
+ x2="53.700001"
+ y2="64.599998"
+ id="lg1916"
+ xlink:href="#XMLID_2703_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)" />
+ <linearGradient
+ x1="224.31"
+ y1="19.450001"
+ x2="214.33"
+ y2="11.46"
+ id="XMLID_419_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#404040;stop-opacity:1"
+ offset="0"
+ id="s1903" />
+ <stop
+ style="stop-color:#6d6d6d;stop-opacity:1"
+ offset="0.33000001"
+ id="s1905" />
+ <stop
+ style="stop-color:#e9e9e9;stop-opacity:1"
+ offset="1"
+ id="s1907" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#404040" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#404040" />
+ <a:midPointStop
+ offset="0.33"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#E9E9E9" />
+ </linearGradient>
+ <linearGradient
+ x1="221.84"
+ y1="32.779999"
+ x2="212.2"
+ y2="20.27"
+ id="lg1988"
+ xlink:href="#XMLID_419_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+ <linearGradient
+ x1="228.35001"
+ y1="33.279999"
+ x2="215.42999"
+ y2="33.279999"
+ id="lg1900"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s1902" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="s1906" />
+ <a:midPointStop
+ style="stop-color:#575757"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#575757"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#6D6D6D"
+ offset="0.33" />
+ <a:midPointStop
+ style="stop-color:#6D6D6D"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#D3D3D3"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="234.81"
+ y1="33.279999"
+ x2="228.27"
+ y2="33.279999"
+ id="lg1908"
+ xlink:href="#lg1900"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+ <linearGradient
+ x1="228.35001"
+ y1="33.279999"
+ x2="215.42999"
+ y2="33.279999"
+ id="XMLID_416_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#575757;stop-opacity:1"
+ offset="0"
+ id="s1874" />
+ <stop
+ style="stop-color:#6d6d6d;stop-opacity:1"
+ offset="0.33000001"
+ id="s1876" />
+ <stop
+ style="stop-color:#d3d3d3;stop-opacity:1"
+ offset="1"
+ id="s1878" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#575757" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#575757" />
+ <a:midPointStop
+ offset="0.33"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#D3D3D3" />
+ </linearGradient>
+ <linearGradient
+ x1="228.35001"
+ y1="33.279999"
+ x2="215.42999"
+ y2="33.279999"
+ id="lg1991"
+ xlink:href="#XMLID_416_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+ <radialGradient
+ cx="603.19"
+ cy="230.77"
+ r="1.67"
+ fx="603.19"
+ fy="230.77"
+ id="x5010_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+ <stop
+ style="stop-color:#c9ffc9;stop-opacity:1"
+ offset="0"
+ id="stop29201" />
+ <stop
+ style="stop-color:#23a11f;stop-opacity:1"
+ offset="1"
+ id="stop29203" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#C9FFC9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#C9FFC9" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#23A11F" />
+ </radialGradient>
+ <radialGradient
+ cx="603.19"
+ cy="230.77"
+ r="1.67"
+ fx="603.19"
+ fy="230.77"
+ id="radialGradient5711"
+ xlink:href="#x5010_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+ <linearGradient
+ x1="592.31"
+ y1="162.60001"
+ x2="609.32001"
+ y2="145.59"
+ id="lg5722"
+ xlink:href="#x5003_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="601.48999"
+ y1="170.16"
+ x2="613.84003"
+ y2="170.16"
+ id="x5002_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop29134" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.2"
+ id="stop29136" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="stop29138" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.20"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#999999" />
+ </linearGradient>
+ <linearGradient
+ x1="601.48999"
+ y1="170.16"
+ x2="613.84003"
+ y2="170.16"
+ id="lg5725"
+ xlink:href="#x5002_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.23"
+ id="x5004_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop29157" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop29159" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.23"
+ id="lg5728"
+ xlink:href="#x5004_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="592.31"
+ y1="162.60001"
+ x2="609.32001"
+ y2="145.59"
+ id="x5003_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0"
+ id="stop29143" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="1"
+ id="stop29145" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#E5E5E5" />
+ </linearGradient>
+ <linearGradient
+ x1="592.31"
+ y1="162.60001"
+ x2="609.32001"
+ y2="145.59"
+ id="lg5732"
+ xlink:href="#x5003_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.24001"
+ id="x5000_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop29124" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop29126" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.24001"
+ id="lg5735"
+ xlink:href="#x5000_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="308.54999"
+ y1="149.89999"
+ x2="299.72"
+ y2="148.83"
+ id="XMLID_2433_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d6d6d6;stop-opacity:1"
+ offset="0"
+ id="71615" />
+ <stop
+ style="stop-color:#a5a5a5;stop-opacity:1"
+ offset="1"
+ id="71617" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D6D6D6" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D6D6D6" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#A5A5A5" />
+ </linearGradient>
+ <linearGradient
+ x1="308.54999"
+ y1="149.89999"
+ x2="299.72"
+ y2="148.83"
+ id="lg1952"
+ xlink:href="#XMLID_2433_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+ <radialGradient
+ cx="307.39999"
+ cy="121"
+ r="23.35"
+ fx="307.39999"
+ fy="121"
+ id="XMLID_2432_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0.19"
+ id="71592" />
+ <stop
+ style="stop-color:#cfcfcf;stop-opacity:1"
+ offset="0.44999999"
+ id="71594" />
+ <stop
+ style="stop-color:#c7c7c7;stop-opacity:1"
+ offset="0.60000002"
+ id="71596" />
+ <stop
+ style="stop-color:#b9b9b9;stop-opacity:1"
+ offset="0.74000001"
+ id="71598" />
+ <stop
+ style="stop-color:#a4a4a4;stop-opacity:1"
+ offset="0.86000001"
+ id="71600" />
+ <stop
+ style="stop-color:#8a8a8a;stop-opacity:1"
+ offset="0.95999998"
+ id="71602" />
+ <stop
+ style="stop-color:gray;stop-opacity:1"
+ offset="1"
+ id="71604" />
+ <a:midPointStop
+ offset="0.19"
+ style="stop-color:#D2D2D2" />
+ <a:midPointStop
+ offset="0.8"
+ style="stop-color:#D2D2D2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#808080" />
+ </radialGradient>
+ <radialGradient
+ cx="307.39999"
+ cy="121"
+ r="23.35"
+ fx="307.39999"
+ fy="121"
+ id="radialGradient2331"
+ xlink:href="#XMLID_2432_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-276.62,-121.54)" />
+ <linearGradient
+ x1="294.13"
+ y1="127.07"
+ x2="294.13"
+ y2="142.2"
+ id="XMLID_2430_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b5d8ff;stop-opacity:1"
+ offset="0"
+ id="71582" />
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="1"
+ id="71584" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B5D8FF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B5D8FF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#000000" />
+ </linearGradient>
+ <linearGradient
+ x1="294.13"
+ y1="127.07"
+ x2="294.13"
+ y2="142.2"
+ id="lg2820"
+ xlink:href="#XMLID_2430_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+ <linearGradient
+ x1="279.10999"
+ y1="148.03"
+ x2="309.16"
+ y2="148.03"
+ id="XMLID_2429_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e1e1e1;stop-opacity:1"
+ offset="0"
+ id="71564" />
+ <stop
+ style="stop-color:#e1e1e1;stop-opacity:1"
+ offset="0.25"
+ id="71566" />
+ <stop
+ style="stop-color:#a5a5a5;stop-opacity:1"
+ offset="0.44"
+ id="71568" />
+ <stop
+ style="stop-color:#a5a5a5;stop-opacity:1"
+ offset="1"
+ id="71570" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.25"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.44"
+ style="stop-color:#A5A5A5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#A5A5A5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#A5A5A5" />
+ </linearGradient>
+ <linearGradient
+ x1="279.10999"
+ y1="148.03"
+ x2="309.16"
+ y2="148.03"
+ id="lg2818"
+ xlink:href="#XMLID_2429_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+ <radialGradient
+ cx="622.34302"
+ cy="14.449"
+ r="26.496"
+ fx="622.34302"
+ fy="14.449"
+ id="lg3499_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+ <stop
+ style="stop-color:#23468e;stop-opacity:1"
+ offset="0"
+ id="stop10972" />
+ <stop
+ style="stop-color:#012859;stop-opacity:1"
+ offset="1"
+ id="stop10974" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#23468E" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#23468E" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#012859" />
+ </radialGradient>
+ <radialGradient
+ cx="622.34302"
+ cy="14.449"
+ r="26.496"
+ fx="622.34302"
+ fy="14.449"
+ id="rg5791"
+ xlink:href="#lg3499_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+ <linearGradient
+ x1="616.112"
+ y1="76.247002"
+ x2="588.14099"
+ y2="60.742001"
+ id="lg3497_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#01326e;stop-opacity:1"
+ offset="0"
+ id="stop10962" />
+ <stop
+ style="stop-color:#012859;stop-opacity:1"
+ offset="1"
+ id="stop10964" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#01326E" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#01326E" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#012859" />
+ </linearGradient>
+ <linearGradient
+ x1="617.698"
+ y1="82.445999"
+ x2="585.95203"
+ y2="54.848999"
+ id="lg3496_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="stop10950" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop10952" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="617.698"
+ y1="82.445999"
+ x2="585.95203"
+ y2="54.848999"
+ id="lg5794"
+ xlink:href="#lg3496_"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="601.39001"
+ y1="55.341"
+ x2="588.29199"
+ y2="71.515999"
+ id="lg3495_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop10941" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.52200001"
+ id="stop10943" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop10945" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.522"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="601.39001"
+ y1="55.341"
+ x2="588.29199"
+ y2="71.515999"
+ id="lg5771"
+ xlink:href="#lg3495_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+ <linearGradient
+ x1="611.34601"
+ y1="55.279999"
+ x2="590.39001"
+ y2="81.157997"
+ id="lg3494_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop10932" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.52200001"
+ id="stop10934" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop10936" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.522"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="611.34601"
+ y1="55.279999"
+ x2="590.39001"
+ y2="81.157997"
+ id="lg5774"
+ xlink:href="#lg3494_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+ <linearGradient
+ x1="798.72998"
+ y1="69.839996"
+ x2="799.04999"
+ y2="70.709999"
+ id="g3302_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#005e00;stop-opacity:1"
+ offset="0"
+ id="s6504" />
+ <stop
+ style="stop-color:#23a11f;stop-opacity:1"
+ offset="1"
+ id="s6506" />
+ <a:midPointstop
+ style="stop-color:#005E00"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#005E00"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#23A11F"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="798.72998"
+ y1="69.839996"
+ x2="799.04999"
+ y2="70.709999"
+ id="lg5851"
+ xlink:href="#g3302_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+ <linearGradient
+ x1="779.19"
+ y1="122.73"
+ x2="811.69"
+ y2="149.74001"
+ id="g3301_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0"
+ id="s6483" />
+ <stop
+ style="stop-color:#eee;stop-opacity:1"
+ offset="0.17"
+ id="s6485" />
+ <stop
+ style="stop-color:#e3e3e3;stop-opacity:1"
+ offset="0.34"
+ id="s6487" />
+ <stop
+ style="stop-color:#cfcfcf;stop-opacity:1"
+ offset="0.50999999"
+ id="s6489" />
+ <stop
+ style="stop-color:#b4b4b4;stop-opacity:1"
+ offset="0.67000002"
+ id="s6491" />
+ <stop
+ style="stop-color:#919191;stop-opacity:1"
+ offset="0.83999997"
+ id="s6493" />
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="1"
+ id="s6495" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.71" />
+ <a:midPointstop
+ style="stop-color:#666666"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="779.19"
+ y1="122.73"
+ x2="811.69"
+ y2="149.74001"
+ id="lg5855"
+ xlink:href="#g3301_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+ <clipPath
+ id="g3299_">
+ <use
+ id="use6469"
+ x="0"
+ y="0"
+ width="1005.92"
+ height="376.97"
+ xlink:href="#g101_" />
+ </clipPath>
+ <radialGradient
+ cx="1189.9301"
+ cy="100.05"
+ r="40.400002"
+ fx="1189.9301"
+ fy="100.05"
+ id="g3300_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s6472" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="s6474" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#000000"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1199.74"
+ cy="97.150002"
+ r="40.400002"
+ fx="1199.74"
+ fy="97.150002"
+ id="rg5860"
+ xlink:href="#g3300_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+ <linearGradient
+ x1="796.38"
+ y1="67.580002"
+ x2="781.28003"
+ y2="58.549999"
+ id="g3298_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#4c8bca;stop-opacity:1"
+ offset="0"
+ id="s6462" />
+ <stop
+ style="stop-color:#b7e9ff;stop-opacity:1"
+ offset="1"
+ id="s6464" />
+ <a:midPointstop
+ style="stop-color:#4C8BCA"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#4C8BCA"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B7E9FF"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="800.97998"
+ y1="140.72"
+ x2="777.71997"
+ y2="121.76"
+ id="g3297_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="s6448" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s6450" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="800.97998"
+ y1="140.72"
+ x2="777.71997"
+ y2="121.76"
+ id="lg5890"
+ xlink:href="#g3297_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+ <linearGradient
+ x1="790.03998"
+ y1="-16.33"
+ x2="779.84003"
+ y2="-3.73"
+ id="g3296_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,70.17)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="s6439" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.51999998"
+ id="s6441" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s6443" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.52" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="790.03998"
+ y1="-16.33"
+ x2="779.84003"
+ y2="-3.73"
+ id="lg5866"
+ xlink:href="#g3296_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+ <linearGradient
+ x1="785.84003"
+ y1="72.989998"
+ x2="785.26001"
+ y2="76.279999"
+ id="g3293_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s6412" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="1"
+ id="s6414" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#737373"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="785.84003"
+ y1="72.989998"
+ x2="785.26001"
+ y2="76.279999"
+ id="lg5871"
+ xlink:href="#g3293_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+ <linearGradient
+ x1="789.37"
+ y1="69.879997"
+ x2="791.03998"
+ y2="77.120003"
+ id="g3292_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="0"
+ id="s6403" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.28"
+ id="s6405" />
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="1"
+ id="s6407" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.28" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#666666"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="789.37"
+ y1="69.879997"
+ x2="791.03998"
+ y2="77.120003"
+ id="lg5874"
+ xlink:href="#g3292_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+ <linearGradient
+ x1="786.65997"
+ y1="136.12"
+ x2="786.71002"
+ y2="134.33"
+ id="g3290_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="s6380" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="1"
+ id="s6382" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="786.65997"
+ y1="136.12"
+ x2="786.71002"
+ y2="134.33"
+ id="lg5878"
+ xlink:href="#g3290_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+ <radialGradient
+ cx="1458.77"
+ cy="-5.0999999"
+ r="35.130001"
+ fx="1458.77"
+ fy="-5.0999999"
+ id="g3289_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s6371" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="s6373" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1458.77"
+ cy="-5.0999999"
+ r="35.130001"
+ fx="1458.77"
+ fy="-5.0999999"
+ id="rg5881"
+ xlink:href="#g3289_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+ <radialGradient
+ cx="1612.98"
+ cy="-4.4699998"
+ r="36.580002"
+ fx="1612.98"
+ fy="-4.4699998"
+ id="g3288_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="s6362" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0.63999999"
+ id="s6364" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="1"
+ id="s6366" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.64" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#737373"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1612.98"
+ cy="-4.4699998"
+ r="36.580002"
+ fx="1612.98"
+ fy="-4.4699998"
+ id="rg5884"
+ xlink:href="#g3288_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+ <radialGradient
+ cx="1470.5"
+ cy="-10.21"
+ r="33.290001"
+ fx="1470.5"
+ fy="-10.21"
+ id="g3287_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="s6347" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0.38999999"
+ id="s6349" />
+ <stop
+ style="stop-color:#b1b1b1;stop-opacity:1"
+ offset="0.75"
+ id="s6351" />
+ <stop
+ style="stop-color:#aaa;stop-opacity:1"
+ offset="0.88"
+ id="s6353" />
+ <stop
+ style="stop-color:#9e9e9e;stop-opacity:1"
+ offset="0.97000003"
+ id="s6355" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="s6357" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.39" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.87" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1470.5"
+ cy="-10.21"
+ r="33.290001"
+ fx="1470.5"
+ fy="-10.21"
+ id="rg5887"
+ xlink:href="#g3287_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+ <pattern
+ patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+ id="cream-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-365.3146,-513.505)"
+ id="g3047">
+ id="path2858" />
+ <path
+ inkscape:label="#path2854"
+ sodipodi:nodetypes="czzzz"
+ style="fill:#e3dcc0"
+ id="path3060"
+ d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+ </pattern>
+ <pattern
+ patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+ id="dark-cream-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-408.0946,-513.505)"
+ id="dark-cream-spot"
+ inkscape:label="#g3043">
+ <path
+ sodipodi:nodetypes="czzzz"
+ style="fill:#c8c5ac"
+ d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+ id="path2953" />
+ </g>
+ </pattern>
+ <pattern
+ patternTransform="matrix(0.375,0,0,0.375,379,400)"
+ id="white-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-484.3997,-513.505)"
+ id="white-spot"
+ inkscape:label="#g3035">
+ <path
+ style="opacity:0.25;fill:white"
+ id="path3033"
+ d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+ sodipodi:nodetypes="czzzz" />
+ </g>
+ </pattern>
+ <pattern
+ patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+ id="black-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-448.3997,-513.505)"
+ id="black-spot"
+ inkscape:label="#g3039">
+ <path
+ sodipodi:nodetypes="czzzz"
+ d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+ id="path2961"
+ style="opacity:0.25;fill:black" />
+ </g>
+ </pattern>
+ <linearGradient
+ x1="501.0903"
+ y1="-19.2544"
+ x2="531.85413"
+ y2="0.72390002"
+ id="linearGradient17334"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop17336" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop17338" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop17340" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop17342" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.5112"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.6461"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#16336E" />
+ </linearGradient>
+ <linearGradient
+ x1="415.73831"
+ y1="11.854"
+ x2="418.13361"
+ y2="18.8104"
+ id="linearGradient17426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="0"
+ id="stop17428" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop17430" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#F2F2F2" />
+ </linearGradient>
+ <linearGradient
+ x1="478.21341"
+ y1="-131.9297"
+ x2="469.85818"
+ y2="-140.28481"
+ id="linearGradient17434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop17436" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop17438" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop17440" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop17442" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#F3403F" />
+ <a:midPointStop
+ offset="0.4213"
+ style="stop-color:#F3403F" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#A6100C" />
+ </linearGradient>
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17709"
+ xlink:href="#XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17711"
+ xlink:href="#XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="linearGradient17713"
+ xlink:href="#XMLID_1753_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17715"
+ xlink:href="#XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="500.70749"
+ y1="-13.2441"
+ x2="513.46442"
+ y2="-2.1547"
+ id="linearGradient17717"
+ xlink:href="#XMLID_1757_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="linearGradient17721"
+ xlink:href="#XMLID_2274_"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="linearGradient17723"
+ xlink:href="#XMLID_2275_"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="500.70749"
+ y1="-13.2441"
+ x2="513.46442"
+ y2="-2.1547"
+ id="linearGradient17416"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop17418" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop17420" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <defs
+ id="defs9929">
+ <path
+ d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+ id="XMLID_960_" />
+ </defs>
+ <clipPath
+ id="clipPath17448">
+ <use
+ id="use17450"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_960_" />
+ </clipPath>
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="linearGradient17452"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop17454" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop17456" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop17458" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop17460" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="linearGradient17463"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop17465" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop17467" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop17469" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop17471" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="linearGradient17807"
+ xlink:href="#XMLID_2275_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-177.1654,35.43307)" />
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="linearGradient17810"
+ xlink:href="#XMLID_2274_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-177.1654,35.43307)" />
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17812"
+ xlink:href="#XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17814"
+ xlink:href="#XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="linearGradient17816"
+ xlink:href="#XMLID_1753_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17818"
+ xlink:href="#XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17347"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop17349" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop17351" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#96BAD6" />
+ </linearGradient>
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="linearGradient17379"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop17381" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop17383" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#F2F2F2" />
+ </linearGradient>
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17862"
+ xlink:href="#XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17864"
+ xlink:href="#XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <defs
+ id="defs3859">
+ <polygon
+ points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+ id="XMLID_343_" />
+ </defs>
+ <linearGradient
+ x1="471.0806"
+ y1="201.07761"
+ x2="481.91711"
+ y2="210.4977"
+ id="linearGradient17389"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#6498c1;stop-opacity:1"
+ offset="0.005618"
+ id="stop17391" />
+ <stop
+ style="stop-color:#79a9cc;stop-opacity:1"
+ offset="0.2332"
+ id="stop17393" />
+ <stop
+ style="stop-color:#a4cde2;stop-opacity:1"
+ offset="0.74049997"
+ id="stop17395" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="1"
+ id="stop17397" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="5.618000e-003" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="0.4438" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath17400">
+ <use
+ id="use17402"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_343_" />
+ </clipPath>
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17404"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop17406" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop17408" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop17410" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop17412" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17882"
+ xlink:href="#XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <defs
+ id="defs3826">
+ <polygon
+ points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+ id="XMLID_338_" />
+ </defs>
+ <linearGradient
+ x1="468.2915"
+ y1="204.7612"
+ x2="479.39871"
+ y2="214.4166"
+ id="linearGradient17357"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop17359" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop17361" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath17364">
+ <use
+ id="use17366"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_338_" />
+ </clipPath>
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop17370" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop17372" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop17374" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop17376" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398"
+ id="linearGradient2387"
+ xlink:href="#linearGradient2381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+ <linearGradient
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398"
+ id="linearGradient5105"
+ xlink:href="#linearGradient2381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+ <linearGradient
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398"
+ id="linearGradient5145"
+ xlink:href="#linearGradient2381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2381"
+ id="linearGradient2371"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398" />
+ </defs>
+ <g
+ transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+ id="g5089">
+ <path
+ d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+ transform="translate(282.8327,227.1903)"
+ style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path5091" />
+ <rect
+ width="27.85074"
+ height="29.369793"
+ rx="1.1414107"
+ ry="1.1414107"
+ x="286.96509"
+ y="227.63805"
+ style="fill:#032c87"
+ id="rect5093" />
+ <path
+ d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+ style="fill:white"
+ id="rect5095" />
+ <path
+ d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+ style="fill:#a70000;fill-opacity:1;stroke-width:2"
+ id="path5097" />
+ <rect
+ width="25.241802"
+ height="29.736675"
+ rx="0.89682275"
+ ry="0.89682275"
+ x="290.73544"
+ y="220.92249"
+ style="fill:#809cc9"
+ id="rect5099" />
+ <path
+ d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+ transform="matrix(0.499065,-0.866565,0,1,0,0)"
+ style="fill:#4573b3;fill-opacity:1"
+ id="rect5101" />
+ <path
+ d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+ style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+ id="path5103" />
+ </g>
+</svg>
15 years, 5 months
JBoss Portal SVN: r12655 - in modules/authorization/trunk: PAP/src/main/java/org/jboss/security/authz/pap/policy and 6 other directories.
by portal-commits@lists.jboss.org
Author: sohil.shah(a)jboss.com
Date: 2009-01-27 04:24:27 -0500 (Tue, 27 Jan 2009)
New Revision: 12655
Added:
modules/authorization/trunk/http-authz/src/test/java/org/jboss/security/authz/http/pap/TestHttpResource.java
Removed:
modules/authorization/trunk/PAP/src/test/java/org/jboss/security/authz/pap/hierarchial/
Modified:
modules/authorization/trunk/
modules/authorization/trunk/.classpath
modules/authorization/trunk/PAP/src/main/java/org/jboss/security/authz/pap/policy/HierarchialPolicy.java
modules/authorization/trunk/common/src/main/java/org/jboss/security/authz/components/resource/HttpResource.java
modules/authorization/trunk/common/src/main/java/org/jboss/security/authz/components/subject/Identity.java
modules/authorization/trunk/http-authz/pom.xml
modules/authorization/trunk/http-authz/src/main/java/org/jboss/security/authz/http/pap/HttpPolicyConfig.java
Log:
starting to mold security provisioning code into a component/profile oriented approach
Property changes on: modules/authorization/trunk
___________________________________________________________________
Name: svn:ignore
+ bin
Modified: modules/authorization/trunk/.classpath
===================================================================
--- modules/authorization/trunk/.classpath 2009-01-26 22:47:49 UTC (rev 12654)
+++ modules/authorization/trunk/.classpath 2009-01-27 09:24:27 UTC (rev 12655)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
+<classpath>
<classpathentry kind="src" path="common/src/main/java"/>
<classpathentry kind="src" path="common/src/main/resources"/>
<classpathentry kind="src" path="common/src/test/java"/>
@@ -16,39 +16,22 @@
<classpathentry kind="src" path="http-authz/src/main/resources"/>
<classpathentry kind="src" path="http-authz/src/test/java"/>
<classpathentry kind="src" path="http-authz/src/test/resources"/>
- <classpathentry kind="src" path="security-console/ejb/src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="output" path="classes"/>
- <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
<classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
<classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/2.1.1/commons-collections-2.1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1-jboss/dom4j-1.6.1-jboss.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/ejb/ejb-api/3.0/ejb-api-3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/el/el-api/1.0/el-api-1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.4.sp1/hibernate-3.2.4.sp1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/3.0.0.GA/hibernate-validator-3.0.0.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.3.GA/javassist-3.3.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/el/jboss-el/2.0.1.GA/jboss-el-2.0.1.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-seam/2.0.2.SP1/jboss-seam-2.0.2.SP1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-seam-ui/2.0.2.SP1/jboss-seam-ui-2.0.2.SP1.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/faces/jsf-api/1.2_04-p02/jsf-api-1.2_04-p02.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar"/>
<classpathentry kind="var" path="M2_REPO/sun-jaxb/jaxb-api/2.1.4/jaxb-api-2.1.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/sun-jaxb/jaxb-impl/2.1.4/jaxb-impl-2.1.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/sun-jaxb/jaxb-xjc/2.1.4/jaxb-xjc-2.1.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.2/junit-3.8.2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/security/jboss-sunxacml/2.0.3-SNAPSHOT/jboss-sunxacml-2.0.3-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/security/jboss-sunxacml/2.0.3-SNAPSHOT/jboss-sunxacml-2.0.3-SNAPSHOT-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/security/jboss-xacml/2.0.3-SNAPSHOT/jboss-xacml-2.0.3-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/security/jboss-xacml/2.0.3-SNAPSHOT/jboss-xacml-2.0.3-SNAPSHOT-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/4.0.7/drools-core-4.0.7.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/4.0.7/drools-compiler-4.0.7.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-kernel/2.0.2.GA/jboss-kernel-2.0.2.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-dependency/2.0.2.GA/jboss-dependency-2.0.2.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.9.GA/jboss-common-core-2.2.9.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/sun-jaxb/jaxb-impl/2.1.4/jaxb-impl-2.1.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/sun-jaxb/jaxb-xjc/2.1.4/jaxb-xjc-2.1.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.2/junit-3.8.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/security/jboss-sunxacml/2.0.3-SNAPSHOT/jboss-sunxacml-2.0.3-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/security/jboss-sunxacml/2.0.3-SNAPSHOT/jboss-sunxacml-2.0.3-SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/security/jboss-xacml/2.0.3-SNAPSHOT/jboss-xacml-2.0.3-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/security/jboss-xacml/2.0.3-SNAPSHOT/jboss-xacml-2.0.3-SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/4.0.7/drools-core-4.0.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/4.0.7/drools-compiler-4.0.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-kernel/2.0.2.GA/jboss-kernel-2.0.2.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-dependency/2.0.2.GA/jboss-dependency-2.0.2.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.9.GA/jboss-common-core-2.2.9.GA.jar"/>
+ <classpathentry kind="output" path="bin"/>
</classpath>
Modified: modules/authorization/trunk/PAP/src/main/java/org/jboss/security/authz/pap/policy/HierarchialPolicy.java
===================================================================
--- modules/authorization/trunk/PAP/src/main/java/org/jboss/security/authz/pap/policy/HierarchialPolicy.java 2009-01-26 22:47:49 UTC (rev 12654)
+++ modules/authorization/trunk/PAP/src/main/java/org/jboss/security/authz/pap/policy/HierarchialPolicy.java 2009-01-27 09:24:27 UTC (rev 12655)
@@ -30,14 +30,12 @@
import javax.xml.bind.JAXBElement;
-import org.jboss.security.authz.model.ExpressionBuilder;
import org.jboss.security.authz.model.Policy;
import org.jboss.security.authz.model.Rule;
import org.jboss.security.authz.model.Target;
import org.jboss.security.authz.model.Effect;
import org.jboss.security.authz.model.PolicyException;
import org.jboss.security.authz.model.AttributeExpression;
-import org.jboss.security.authz.model.Attribute;
import org.jboss.security.authz.model.DroolsRuleExpression;
import org.jboss.security.authz.model.Expression;
import org.jboss.security.authz.xacml.AttributeDesignatorUtil;
@@ -86,14 +84,7 @@
public HierarchialPolicy(String policyUri, Target target, Set<Rule> rules) throws PolicyException
{
- super(policyUri, target, rules);
-
- //Validate the state of the data
- //Make sure there is only one ResourceMatch specified
- if(target.getResourceMatches() == null || target.getResourceMatches().size()>1)
- {
- throw new PolicyException("The HierarchialPolicy type requires there is exactly one match specified for a Resource inside the Policy definition");
- }
+ super(policyUri, target, rules);
}
@@ -289,325 +280,5 @@
private String generateUniqueId()
{
return UUID.randomUUID().toString();
- }
- //---------A Developer Friendly API for generating Hierarchial Policies-------------------------------------------------------------------------------------------------------------------------
- /**
- * Specifies that this Hierarchial Policy should be applied the specified Resource identified by the Unique Resource Uri
- *
- * @param resourceUri Unique identifier for the Resource being protected by this Hierarchial Policy
- */
- public void setResourceCriteria(String resourceUri)
- {
- if(resourceUri == null || resourceUri.trim().length() == 0)
- {
- throw new IllegalArgumentException("Resource Criteria cannot be Empty");
- }
-
- Target target = new Target();
- target.addResourceMatch(ExpressionBuilder.getInstance().createResourceIdExpression(resourceUri));
- this.target = target;
- }
-
- /**
- * Specifies that this Hierarchial Policy should be applied the specified Resource identified by the Unique Resource Uri And the other
- * Attribute Data associated with this Resource, such as Http Parameters in the case of an Http Request Resource
- *
- * @param resourceUri Unique identifier for the Resource being protected by this Hierarchial Policy
- * @param otherResourceCriteria Other Attribute Data associated with this Resource which should match as well for the Policy to apply
- */
- public void setResourceCriteria(String resourceUri, List<Attribute> otherResourceCriteria)
- {
- if(resourceUri == null || resourceUri.trim().length() == 0)
- {
- throw new IllegalArgumentException("Resource Criteria cannot be Empty");
- }
-
- if(otherResourceCriteria == null)
- {
- throw new IllegalArgumentException("Other Criteria cannot be Null");
- }
-
- Target target = new Target();
- target.addResourceMatch(ExpressionBuilder.getInstance().createResourceIdExpression(resourceUri));
-
- for(Attribute attribute: otherResourceCriteria)
- {
- target.addResourceMatch(ExpressionBuilder.getInstance().
- createCustomResourceExpression(attribute.getUri(), attribute.getValue()));
- }
-
- this.target = target;
- }
-
- /**
- * Specifies a Policy Rule that must be applied to the specified "Action" such that the specified "Role" should be allowed
- * to execute this "Action" on the Resource protected by this Policy instance
- *
- * @param action Action for which this Rule applies
- * @param role the Role that is permitted to execute this Action
- */
- public void setPermitCriteria(String action, String role)
- {
- if(action == null || action.trim().length()==0)
- {
- throw new IllegalArgumentException("Action cannot be Empty");
- }
- if(role == null || role.trim().length()==0)
- {
- throw new IllegalArgumentException("Role cannot be Empty");
- }
-
- Rule permitRule = new Rule();
- Target ruleTarget = new Target();
-
- permitRule.setRuleId(action);
- permitRule.setEffect(Effect.PERMIT);
- permitRule.setTarget(ruleTarget);
-
- //Create an Action Match Function
- ruleTarget.addActionMatch(ExpressionBuilder.getInstance().createActionExpression(action));
-
- //Create a Subject Match Function
- ruleTarget.addSubjectMatch(ExpressionBuilder.getInstance().createBelongsToRoleExpression(role));
-
- //Add the Rule to the Policy
- this.rules.add(permitRule);
- }
-
- /**
- * Specifies a Policy Rule that says the specified "Role" should be allowed to access the "Resource" protected by this Policy
- *
- * @param role the Role that is permitted to access the Resource
- */
- public void setPermitCriteria(String role)
- {
- if(role == null || role.trim().length()==0)
- {
- throw new IllegalArgumentException("Role cannot be Empty");
- }
-
- Rule permitRule = new Rule();
- Target ruleTarget = new Target();
-
- permitRule.setRuleId(this.generateUniqueId());
- permitRule.setEffect(Effect.PERMIT);
- permitRule.setTarget(ruleTarget);
-
- //Create a Subject Match Function
- ruleTarget.addSubjectMatch(ExpressionBuilder.getInstance().createBelongsToRoleExpression(role));
-
- //Add the Rule to the Policy
- this.rules.add(permitRule);
- }
-
- /**
- * Specifies a Policy Rule that must be applied to the specified "Action" such that the specified "Role" should *NOT* be allowed
- * to execute this "Action" on the Resource protected by this Policy instance
- *
- * @param action Action for which this Rule applies
- * @param role the Role that is *NOT* permitted to execute this Action
- */
- public void setDenyCriteria(String action, String role)
- {
- if(action == null || action.trim().length()==0)
- {
- throw new IllegalArgumentException("Action cannot be Empty");
- }
- if(role == null || role.trim().length()==0)
- {
- throw new IllegalArgumentException("Role cannot be Empty");
- }
-
- Rule permitRule = new Rule();
- Target ruleTarget = new Target();
-
- permitRule.setRuleId(action);
- permitRule.setEffect(Effect.DENY);
- permitRule.setTarget(ruleTarget);
-
- //Create an Action Match Function
- ruleTarget.addActionMatch(ExpressionBuilder.getInstance().createActionExpression(action));
-
- //Create a Subject Match Function
- ruleTarget.addSubjectMatch(ExpressionBuilder.getInstance().createBelongsToRoleExpression(role));
-
- //Add the Rule to the Policy
- this.rules.add(permitRule);
- }
-
- /**
- * Specifies a Policy Rule that says the specified "Role" should be *Not* be allowed to access the "Resource" protected by this Policy
- *
- * @param role the Role that is *NOT* allowed to access the Resource
- */
- public void setDenyCriteria(String role)
- {
- if(role == null || role.trim().length()==0)
- {
- throw new IllegalArgumentException("Role cannot be Empty");
- }
-
- Rule permitRule = new Rule();
- Target ruleTarget = new Target();
-
- permitRule.setRuleId(this.generateUniqueId());
- permitRule.setEffect(Effect.DENY);
- permitRule.setTarget(ruleTarget);
-
- //Create a Subject Match Function
- ruleTarget.addSubjectMatch(ExpressionBuilder.getInstance().createBelongsToRoleExpression(role));
-
- //Add the Rule to the Policy
- this.rules.add(permitRule);
- }
-
- /**
- * Specifies a Policy Rule that must be applied to the specified "Action" such that the Authenticated User will be permitted to
- * execute it if he/she belongs to any of the specified "Roles"
- *
- * @param action Action for which this Rule applies
- * @param roles a list of permitted roles for this Action
- */
- public void setPermitCriteria(String action, String[] roles)
- {
- if(action == null || action.trim().length()==0)
- {
- throw new IllegalArgumentException("Action cannot be Empty");
- }
-
-
- Rule permitRule = new Rule();
- Target ruleTarget = new Target();
-
- permitRule.setRuleId(action);
- permitRule.setEffect(Effect.PERMIT);
- permitRule.setTarget(ruleTarget);
-
- //Create an Action Match Function
- ruleTarget.addActionMatch(ExpressionBuilder.getInstance().createActionExpression(action));
-
- //Create a Subject Match Function
- if(roles != null)
- {
- for(int i=0; i<roles.length; i++)
- {
- ruleTarget.addSubjectMatch(ExpressionBuilder.getInstance().createBelongsToRoleExpression(roles[i]));
- }
- }
-
- //Add the Rule to the Policy
- this.rules.add(permitRule);
- }
-
- /**
- * Specifies a Policy Rule that must be applied to the specified "Action" such that the Authenticated User will *NOT* be permitted to
- * execute it if he/she belongs to any of the specified "Roles"
- *
- * @param action Action for which this Rule applies
- * @param roles a list of roles that must *NOT* be allowed to execute for this Action
- */
- public void setDenyCriteria(String action, String[] roles)
- {
- if(action == null || action.trim().length()==0)
- {
- throw new IllegalArgumentException("Action cannot be Empty");
- }
-
-
- Rule permitRule = new Rule();
- Target ruleTarget = new Target();
-
- permitRule.setRuleId(action);
- permitRule.setEffect(Effect.DENY);
- permitRule.setTarget(ruleTarget);
-
- //Create an Action Match Function
- ruleTarget.addActionMatch(ExpressionBuilder.getInstance().createActionExpression(action));
-
- //Create a Subject Match Function
- if(roles != null)
- {
- for(int i=0; i<roles.length; i++)
- {
- ruleTarget.addSubjectMatch(ExpressionBuilder.getInstance().createBelongsToRoleExpression(roles[i]));
- }
- }
-
- //Add the Rule to the Policy
- this.rules.add(permitRule);
- }
-
- /**
- * Specifies a Policy Rule that mush be applied to the specified "Action" such that the specified Drools based Rule expression evaluates to
- * a "PERMIT" result. The Expression will work on arbitrary data specified as Attributes within the Context of this particular Authorization Request
- *
- * @param action Action for which this Rule applies
- * @param ruleExpression A Drools based Rule Expression
- */
- public void setPermitCriteria(String action, DroolsRuleExpression ruleExpression)
- {
- if(action == null || action.trim().length()==0)
- {
- throw new IllegalArgumentException("Action cannot be Empty");
- }
- if(ruleExpression == null)
- {
- throw new IllegalArgumentException("RuleExpression cannot be Empty");
- }
-
- //TODO: Add the Drools Rule to the Drools Rule Repository
-
- Rule permitRule = new Rule();
- Target ruleTarget = new Target();
-
- permitRule.setRuleId(action);
- permitRule.setEffect(Effect.PERMIT);
- permitRule.setTarget(ruleTarget);
-
- //Create an Action Match Function
- ruleTarget.addActionMatch(ExpressionBuilder.getInstance().createActionExpression(action));
-
- //Create a pointer to the new Rule
- permitRule.setExpression(ruleExpression);
-
- //Add the Rule to the Policy
- this.rules.add(permitRule);
- }
-
- /**
- * Specifies a Policy Rule that mush be applied to the specified "Action" such that the specified Drools based Rule expression evaluates to
- * a "DENY" result. The Expression will work on arbitrary data specified as Attributes within the Context of this particular Authorization Request
- *
- * @param action Action for which this Rule applies
- * @param ruleExpression A Drools based Rule Expression
- */
- public void setDenyCriteria(String action, DroolsRuleExpression ruleExpression)
- {
- if(action == null || action.trim().length()==0)
- {
- throw new IllegalArgumentException("Action cannot be Empty");
- }
- if(ruleExpression == null)
- {
- throw new IllegalArgumentException("RuleExpression cannot be Empty");
- }
-
- //TODO: Add the Drools Rule to the Drools Rule Repository
-
- Rule permitRule = new Rule();
- Target ruleTarget = new Target();
-
- permitRule.setRuleId(action);
- permitRule.setEffect(Effect.DENY);
- permitRule.setTarget(ruleTarget);
-
- //Create an Action Match Function
- ruleTarget.addActionMatch(ExpressionBuilder.getInstance().createActionExpression(action));
-
- //Create a pointer to the new Rule
- permitRule.setExpression(ruleExpression);
-
- //Add the Rule to the Policy
- this.rules.add(permitRule);
- }
+ }
}
Modified: modules/authorization/trunk/common/src/main/java/org/jboss/security/authz/components/resource/HttpResource.java
===================================================================
--- modules/authorization/trunk/common/src/main/java/org/jboss/security/authz/components/resource/HttpResource.java 2009-01-26 22:47:49 UTC (rev 12654)
+++ modules/authorization/trunk/common/src/main/java/org/jboss/security/authz/components/resource/HttpResource.java 2009-01-27 09:24:27 UTC (rev 12655)
@@ -22,14 +22,18 @@
******************************************************************************/
package org.jboss.security.authz.components.resource;
-import java.net.URL;
import java.util.Map;
import java.util.HashMap;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Set;
-import org.jboss.security.authz.model.Attribute;
import org.jboss.security.authz.model.AttributeExpression;
-import org.jboss.security.xacml.interfaces.XACMLConstants;
-import org.jboss.security.xacml.interfaces.XMLSchemaConstants;
+import org.jboss.security.authz.model.Effect;
+import org.jboss.security.authz.model.ExpressionBuilder;
+import org.jboss.security.authz.model.Rule;
+import org.jboss.security.authz.model.Target;
+import org.jboss.security.authz.tools.GeneralTool;
/**
* The HttpResource Policy Component represents a System Resource available via the HTTP Protocol
@@ -45,14 +49,14 @@
/**
* The URL that identifies this resource
*/
- private URL url;
+ private String url;
/**
* The HTTP Parameters that are used to access this resource
*/
private Map<String, String> parameters;
- public HttpResource(URL url)
+ public HttpResource(String url)
{
if(url == null)
{
@@ -75,13 +79,13 @@
}
- public URL getUrl()
+ public String getUrl()
{
return url;
}
- public void setUrl(URL url)
+ public void setUrl(String url)
{
this.url = url;
}
@@ -94,6 +98,11 @@
}
this.parameters.put(name, value);
}
+
+ public boolean hasParameters()
+ {
+ return (this.parameters != null && !this.parameters.isEmpty());
+ }
//------------------------------------------------------------------------------------------------------------------------------------------------------------
/**
* Creates an expression for matching the URL of the HttpResource
@@ -107,15 +116,7 @@
throw new IllegalStateException("Http URL cannot be Empty");
}
- AttributeExpression expression = new AttributeExpression();
-
- expression.setFunctionId(XACMLConstants.FUNCTION_STRING_EQUAL);
-
- Attribute attribute = new Attribute(XACMLConstants.ATTRIBUTEID_RESOURCE_ID,
- XMLSchemaConstants.DATATYPE_STRING, this.url.toString());
- expression.setAttribute(attribute);
-
- return expression;
+ return ExpressionBuilder.getInstance().createResourceIdExpression(this.url);
}
/**
@@ -123,16 +124,81 @@
*
* @return the desired expression
*/
- public AttributeExpression createURLWithParametersExpression()
+ public List<AttributeExpression> createURLWithParametersExpression()
{
- AttributeExpression expression = new AttributeExpression();
+ List<AttributeExpression> expressions = new ArrayList<AttributeExpression>();
- expression.setFunctionId(XACMLConstants.FUNCTION_STRING_EQUAL);
-
- Attribute attribute = new Attribute(XACMLConstants.ATTRIBUTEID_AUTHENTICATION_METHOD,
- XMLSchemaConstants.DATATYPE_STRING, this.authenticationMethod);
- expression.setAttribute(attribute);
-
- return expression;
+ expressions.add(this.createURLExpression());
+ if(this.parameters != null)
+ {
+ Set<String> names = this.parameters.keySet();
+ for(String name: names)
+ {
+ String value = this.parameters.get(name);
+
+ AttributeExpression expression = ExpressionBuilder.getInstance().createCustomResourceExpression(name, value);
+ expressions.add(expression);
+ }
+ }
+
+ return expressions;
}
+
+ /**
+ * Creates a Policy Rule suggesting the specified 'Roles' are permitted access to the 'Resource' designated in the Policy
+ *
+ * @param roles that must be allowed access to the 'Resource' in question in the Policy
+ * @return the rules
+ */
+ public Rule createPermittedRolesRule(String[] roles)
+ {
+ if(roles == null || roles.length == 0)
+ {
+ throw new IllegalArgumentException("Roles must be specified!!");
+ }
+
+ Rule permitRule = new Rule();
+ Target ruleTarget = new Target();
+
+ permitRule.setRuleId(GeneralTool.generateUniqueId());
+ permitRule.setEffect(Effect.PERMIT);
+ permitRule.setTarget(ruleTarget);
+
+ //Create a Subject Match Function
+ for(String role: roles)
+ {
+ ruleTarget.addSubjectMatch(ExpressionBuilder.getInstance().createBelongsToRoleExpression(role));
+ }
+
+ return permitRule;
+ }
+
+ /**
+ * Creates a Policy Rule suggesting the specified 'Roles' are denied access to the 'Resource' designated in the Policy
+ *
+ * @param roles that must be denied access to the 'Resource' in question in the Policy
+ * @return the rules
+ */
+ public Rule createDeniedRolesRule(String[] roles)
+ {
+ if(roles == null || roles.length == 0)
+ {
+ throw new IllegalArgumentException("Roles must be specified!!");
+ }
+
+ Rule denyRule = new Rule();
+ Target ruleTarget = new Target();
+
+ denyRule.setRuleId(GeneralTool.generateUniqueId());
+ denyRule.setEffect(Effect.DENY);
+ denyRule.setTarget(ruleTarget);
+
+ //Create a Subject Match Function
+ for(String role: roles)
+ {
+ ruleTarget.addSubjectMatch(ExpressionBuilder.getInstance().createBelongsToRoleExpression(role));
+ }
+
+ return denyRule;
+ }
}
Modified: modules/authorization/trunk/common/src/main/java/org/jboss/security/authz/components/subject/Identity.java
===================================================================
--- modules/authorization/trunk/common/src/main/java/org/jboss/security/authz/components/subject/Identity.java 2009-01-26 22:47:49 UTC (rev 12654)
+++ modules/authorization/trunk/common/src/main/java/org/jboss/security/authz/components/subject/Identity.java 2009-01-27 09:24:27 UTC (rev 12655)
@@ -24,6 +24,8 @@
import org.jboss.security.authz.model.Attribute;
import org.jboss.security.authz.model.AttributeExpression;
+import org.jboss.security.authz.model.ExpressionBuilder;
+
import org.jboss.security.xacml.interfaces.XACMLConstants;
import org.jboss.security.xacml.interfaces.XMLSchemaConstants;
@@ -83,16 +85,8 @@
* @return an expression that will be used within the Policy Definition
*/
public AttributeExpression createIdentityExpression()
- {
- AttributeExpression expression = new AttributeExpression();
-
- expression.setFunctionId(XACMLConstants.FUNCTION_STRING_EQUAL);
-
- Attribute attribute = new Attribute(XACMLConstants.ATTRIBUTEID_SUBJECT_ID,
- XMLSchemaConstants.DATATYPE_STRING, this.name);
- expression.setAttribute(attribute);
-
- return expression;
+ {
+ return ExpressionBuilder.getInstance().createIdentityExpression(this.name);
}
/**
Modified: modules/authorization/trunk/http-authz/pom.xml
===================================================================
--- modules/authorization/trunk/http-authz/pom.xml 2009-01-26 22:47:49 UTC (rev 12654)
+++ modules/authorization/trunk/http-authz/pom.xml 2009-01-27 09:24:27 UTC (rev 12655)
@@ -52,9 +52,8 @@
<version>2.3.1</version>
<configuration>
<includes>
- <!--
- <include>**/TestHttpPolicyConfig.java</include>
- -->
+ <include>**/TestHttpResource.java</include>
+ <include>**/TestHttpPolicyConfig.java</include>
</includes>
</configuration>
</plugin>
Modified: modules/authorization/trunk/http-authz/src/main/java/org/jboss/security/authz/http/pap/HttpPolicyConfig.java
===================================================================
--- modules/authorization/trunk/http-authz/src/main/java/org/jboss/security/authz/http/pap/HttpPolicyConfig.java 2009-01-26 22:47:49 UTC (rev 12654)
+++ modules/authorization/trunk/http-authz/src/main/java/org/jboss/security/authz/http/pap/HttpPolicyConfig.java 2009-01-27 09:24:27 UTC (rev 12655)
@@ -28,6 +28,8 @@
import java.util.List;
import java.util.ArrayList;
import java.util.UUID;
+import java.util.Set;
+import java.util.HashSet;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -43,6 +45,8 @@
import org.jboss.security.authz.model.Effect;
import org.jboss.security.authz.model.Policy;
import org.jboss.security.authz.model.Rule;
+import org.jboss.security.authz.model.Target;
+import org.jboss.security.authz.components.resource.HttpResource;
import org.jboss.security.authz.pap.policy.HierarchialPolicy;
import org.jboss.security.authz.pap.spi.PolicyConfig;
@@ -82,7 +86,9 @@
{
Element aclRuleElem = (Element)aclRules.item(i);
String policyUri = aclRuleElem.getAttribute("id");
- Policy policy = new HierarchialPolicy(policyUri);
+ Target target = new Target();
+ Set<Rule> rules = new HashSet<Rule>();
+ Policy policy = new HierarchialPolicy(policyUri, target, rules);
this.parseTarget((HierarchialPolicy)policy, aclRuleElem);
this.parseRules((HierarchialPolicy)policy, aclRuleElem);
@@ -113,13 +119,13 @@
//XMLParsing----------------------------------------------------------------------------------------------------------------------------------------------------
private void parseTarget(HierarchialPolicy policy, Element aclRuleElem) throws Exception
- {
+ {
Element resourceElem = (Element)aclRuleElem.getElementsByTagName("resource").item(0);
Element requestUriElem = (Element)aclRuleElem.getElementsByTagName("request-uri").item(0);
//Add RequestUri as a Resource To Match
String requestUri = requestUriElem.getTextContent();
- List<Attribute> otherCriteria = new ArrayList<Attribute>();
+ HttpResource httpResource = new HttpResource(requestUri);
//Process Parameters
NodeList parameters = resourceElem.getElementsByTagName("param");
@@ -132,21 +138,21 @@
String name = ((Element)parameter.getElementsByTagName("name").item(0)).getTextContent();
String value = ((Element)parameter.getElementsByTagName("value").item(0)).getTextContent();
- Attribute cour = new Attribute();
- cour.setUri(name);
- cour.setValue(value);
-
- otherCriteria.add(cour);
+ httpResource.addParameter(name, value);
}
- }
+ }
- if(!otherCriteria.isEmpty())
+ if(httpResource.hasParameters())
{
- policy.setResourceCriteria(requestUri, otherCriteria);
+ List<AttributeExpression> exprs = httpResource.createURLWithParametersExpression();
+ for(AttributeExpression expr: exprs)
+ {
+ policy.getTarget().addResourceMatch(expr);
+ }
}
else
{
- policy.setResourceCriteria(requestUri);
+ policy.getTarget().addResourceMatch(httpResource.createURLExpression());
}
}
@@ -181,9 +187,7 @@
for(int j=0, length=roleNodes.getLength(); j<length; j++)
{
Element roleNameElem = (Element)roleNodes.item(j);
- String roleName = roleNameElem.getTextContent();
-
- policy.setPermitCriteria(roleName);
+ String roleName = roleNameElem.getTextContent();
}
}
Added: modules/authorization/trunk/http-authz/src/test/java/org/jboss/security/authz/http/pap/TestHttpResource.java
===================================================================
--- modules/authorization/trunk/http-authz/src/test/java/org/jboss/security/authz/http/pap/TestHttpResource.java (rev 0)
+++ modules/authorization/trunk/http-authz/src/test/java/org/jboss/security/authz/http/pap/TestHttpResource.java 2009-01-27 09:24:27 UTC (rev 12655)
@@ -0,0 +1,112 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software 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
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.security.authz.http.pap;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.Logger;
+
+import org.jboss.security.authz.components.resource.HttpResource;
+import org.jboss.security.authz.model.Target;
+import org.jboss.security.authz.model.AttributeExpression;
+import org.jboss.security.authz.model.Policy;
+import org.jboss.security.authz.model.Rule;
+import org.jboss.security.authz.pap.policy.HierarchialPolicy;
+
+
+/**
+ * @author <a href="mailto:sshah@redhat.com">Sohil Shah</a>
+ */
+public class TestHttpResource extends TestCase
+{
+ private static Logger log = Logger.getLogger(TestHttpResource.class);
+
+ public void testCreateURLExpression() throws Exception
+ {
+ HttpResource httpResource = new HttpResource("/portal/admin-tool/modifyLayout");
+
+ AttributeExpression urlExpression = httpResource.createURLExpression();
+ Target target = new Target();
+ target.addResourceMatch(urlExpression);
+
+ Policy policy = new HierarchialPolicy("testCreateURLExpression", target, new HashSet<Rule>());
+
+ log.info("------------------------------------------------------------------");
+ log.info(policy.generateXACMLPolicy());
+ }
+
+ public void testCreateURLWithParametersExpression() throws Exception
+ {
+ HttpResource httpResource = new HttpResource("/portal/admin-tool/modifyLayout");
+ httpResource.addParameter("test1", "test1://value");
+ httpResource.addParameter("test2", "test2://value");
+
+
+ List<AttributeExpression> parameterExpressions = httpResource.createURLWithParametersExpression();
+ Target target = new Target();
+ for(AttributeExpression expression: parameterExpressions)
+ {
+ target.addResourceMatch(expression);
+ }
+
+ Policy policy = new HierarchialPolicy("testCreateURLWithParametersExpression", target, new HashSet<Rule>());
+
+ log.info("------------------------------------------------------------------");
+ log.info(policy.generateXACMLPolicy());
+ }
+
+ public void testRoleRules() throws Exception
+ {
+ HttpResource httpResource = new HttpResource("/portal/admin-tool/modifyLayout");
+ httpResource.addParameter("test1", "test1://value");
+ httpResource.addParameter("test2", "test2://value");
+
+ //Resource expression
+ List<AttributeExpression> parameterExpressions = httpResource.createURLWithParametersExpression();
+ Target target = new Target();
+ for(AttributeExpression expression: parameterExpressions)
+ {
+ target.addResourceMatch(expression);
+ }
+
+ //Role rule
+ Set<Rule> rules = new HashSet<Rule>();
+
+ //Permit rule
+ Rule permittedRoles = httpResource.createPermittedRolesRule(new String[]{"admin1", "admin2"});
+ rules.add(permittedRoles);
+
+ //Deny rule
+ Rule deniedRoles = httpResource.createDeniedRolesRule(new String[]{"anonymous", "user"});
+ rules.add(deniedRoles);
+
+
+ Policy policy = new HierarchialPolicy("testRoleRules", target, rules);
+
+ log.info("------------------------------------------------------------------");
+ log.info(policy.generateXACMLPolicy());
+ }
+}
15 years, 5 months
JBoss Portal SVN: r12654 - in branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal: test/core/model/portal and 1 other directory.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2009-01-26 17:47:49 -0500 (Mon, 26 Jan 2009)
New Revision: 12654
Modified:
branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java
branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java
branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectTestCase.java
Log:
- JBPORTAL-2281: Fix incompatible behavior between Java 5 and Java 6.
Modified: branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java
===================================================================
--- branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java 2009-01-26 22:29:30 UTC (rev 12653)
+++ branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java 2009-01-26 22:47:49 UTC (rev 12654)
@@ -280,7 +280,7 @@
public Object[] toArray()
{
- return toArray(new Object[children.size()]);
+ return toArray(new Object[size()]);
}
public Iterator iterator()
@@ -291,22 +291,26 @@
public Object[] toArray(Object a[])
{
ArrayList tmp = new ArrayList(children.size());
+ for (Object child : this)
+ {
+ // no need to add to accessedChildren here as it's already done by ChildrenIterator.next()...
+ tmp.add(child);
+ }
- //
- Set accessedChildren = getAccessedChildren();
+ return tmp.toArray(a);
+ }
- //
- for (Iterator i = iterator(); i.hasNext();)
+ @Override
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder(512);
+ sb.append("[");
+ for (Object o : this)
{
- PortalObject childObject = (PortalObject)i.next();
-
- //
- accessedChildren.add(childObject);
-
- //
- tmp.add(childObject);
+ sb.append(" ").append(o);
}
- return tmp.toArray(a);
+ sb.append(" ]");
+ return sb.toString();
}
private class ChildrenIterator implements Iterator
Modified: branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java
===================================================================
--- branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java 2009-01-26 22:29:30 UTC (rev 12653)
+++ branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java 2009-01-26 22:47:49 UTC (rev 12654)
@@ -1,6 +1,6 @@
/******************************************************************************
* JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * Copyright 2009, Red Hat Middleware, LLC, and individual *
* contributors as indicated by the @authors tag. See the *
* copyright.txt in the distribution for a full listing of *
* individual contributors. *
@@ -130,7 +130,7 @@
duplicate = true;
}
assertTrue(duplicate);
-
+
TransactionAssert.commitTransaction();
}
@@ -144,9 +144,9 @@
n1.createPage("default");
TransactionAssert.commitTransaction();
-
+
boolean rollback = false;
-
+
TransactionAssert.beginTransaction();
try
{
@@ -361,11 +361,6 @@
TransactionAssert.commitTransaction();
}
- public void testPortalNode() throws Exception
- {
-
- }
-
public void testRecreate() throws Exception
{
PortalObjectId defaultId = PortalObjectId.parse("/default", PortalObjectPath.CANONICAL_FORMAT);
@@ -443,16 +438,6 @@
TransactionAssert.commitTransaction();
}
-// private void constructPortalObjects() throws Exception
-// {
-// Context root = container.getContext();
-// assertNotNull(root);
-// Portal portal = root.createPortal("default");
-// assertNotNull(portal);
-// Page page = portal.createPage("default");
-// assertNotNull(page);
-// }
-
private static class PortalObjectComparator implements Comparator
{
public int compare(Object o1, Object o2)
Modified: branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectTestCase.java
===================================================================
--- branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectTestCase.java 2009-01-26 22:29:30 UTC (rev 12653)
+++ branches/Enterprise_Portal_Platform_4_3/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectTestCase.java 2009-01-26 22:47:49 UTC (rev 12654)
@@ -147,7 +147,10 @@
}
}
- /*public void testPerformanceGetChildren() throws DuplicatePortalObjectException, NoSuchPortalObjectException
+ /*
+ // This is commented out because this test is meant to test performance and takes a long time
+ // TODO: Should be moved to a performance test suite
+ public void testPerformanceToArray() throws NoSuchPortalObjectException, DuplicatePortalObjectException
{
Portal portal;
Page page;
@@ -155,6 +158,41 @@
long time = System.currentTimeMillis();
TransactionAssert.beginTransaction();
root.destroyChild(p_1.getName());
+ portal = root.createPortal("portal");
+ page = portal.createPage("page");
+ int nbPages = 200;
+ int nbWindows = 100;
+ for(int j = 0; j < nbPages; j++)
+ {
+ page.createPage("page" + j);
+ }
+ for (int k = 0; k < nbWindows; k++)
+ {
+ page.createWindow("window" + k, ContentType.PORTLET, "foo" + k);
+ }
+ TransactionAssert.commitTransaction();
+ System.out.println("Creation time = " + (System.currentTimeMillis() - time));
+
+ time = System.currentTimeMillis();
+ for (int i = 0; i < 100000; i++)
+ {
+ assertEquals(nbWindows, page.getChildren(PortalObject.WINDOW_MASK).toArray().length);
+ assertEquals(nbPages, page.getChildren(PortalObject.PAGE_MASK).toArray().length);
+ }
+ System.out.println("Tests time = " + (System.currentTimeMillis() - time));
+ }*/
+
+ /*
+ // This is commented out because this test is meant to test performance and takes a long time
+ // TODO: Should be moved to a performance test suite
+ public void testPerformanceGetChildren() throws DuplicatePortalObjectException, NoSuchPortalObjectException
+ {
+ Portal portal;
+ Page page;
+
+ long time = System.currentTimeMillis();
+ TransactionAssert.beginTransaction();
+ root.destroyChild(p_1.getName());
int nbPortals = 5;
int nbPages = 20;
int nbWindows = 20;
15 years, 5 months
JBoss Portal SVN: r12653 - in branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal: test/core/model/portal and 1 other directory.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2009-01-26 17:29:30 -0500 (Mon, 26 Jan 2009)
New Revision: 12653
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectTestCase.java
Log:
- JBPORTAL-2281: Fix incompatible behavior between Java 5 and Java 6
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java 2009-01-26 20:13:45 UTC (rev 12652)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java 2009-01-26 22:29:30 UTC (rev 12653)
@@ -280,7 +280,7 @@
public Object[] toArray()
{
- return toArray(new Object[children.size()]);
+ return toArray(new Object[size()]);
}
public Iterator iterator()
@@ -291,22 +291,26 @@
public Object[] toArray(Object a[])
{
ArrayList tmp = new ArrayList(children.size());
+ for (Object child : this)
+ {
+ // no need to add to accessedChildren here as it's already done by ChildrenIterator.next()...
+ tmp.add(child);
+ }
- //
- Set accessedChildren = getAccessedChildren();
+ return tmp.toArray(a);
+ }
- //
- for (Iterator i = iterator(); i.hasNext();)
+ @Override
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder(512);
+ sb.append("[");
+ for (Object o : this)
{
- PortalObject childObject = (PortalObject)i.next();
-
- //
- accessedChildren.add(childObject);
-
- //
- tmp.add(childObject);
+ sb.append(" ").append(o);
}
- return tmp.toArray(a);
+ sb.append(" ]");
+ return sb.toString();
}
private class ChildrenIterator implements Iterator
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java 2009-01-26 20:13:45 UTC (rev 12652)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectContainerTestCase.java 2009-01-26 22:29:30 UTC (rev 12653)
@@ -1,6 +1,6 @@
/******************************************************************************
* JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * Copyright 2009, Red Hat Middleware, LLC, and individual *
* contributors as indicated by the @authors tag. See the *
* copyright.txt in the distribution for a full listing of *
* individual contributors. *
@@ -20,6 +20,7 @@
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
******************************************************************************/
+
package org.jboss.portal.test.core.model.portal;
import junit.framework.TestSuite;
@@ -130,7 +131,7 @@
duplicate = true;
}
assertTrue(duplicate);
-
+
TransactionAssert.commitTransaction();
}
@@ -144,9 +145,9 @@
n1.createPage("default");
TransactionAssert.commitTransaction();
-
+
boolean rollback = false;
-
+
TransactionAssert.beginTransaction();
try
{
@@ -361,11 +362,6 @@
TransactionAssert.commitTransaction();
}
- public void testPortalNode() throws Exception
- {
-
- }
-
public void testRecreate() throws Exception
{
PortalObjectId defaultId = PortalObjectId.parse("/default", PortalObjectPath.CANONICAL_FORMAT);
@@ -443,16 +439,6 @@
TransactionAssert.commitTransaction();
}
-// private void constructPortalObjects() throws Exception
-// {
-// Context root = container.getContext();
-// assertNotNull(root);
-// Portal portal = root.createPortal("default");
-// assertNotNull(portal);
-// Page page = portal.createPage("default");
-// assertNotNull(page);
-// }
-
private static class PortalObjectComparator implements Comparator
{
public int compare(Object o1, Object o2)
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectTestCase.java 2009-01-26 20:13:45 UTC (rev 12652)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectTestCase.java 2009-01-26 22:29:30 UTC (rev 12653)
@@ -147,7 +147,10 @@
}
}
- /*public void testPerformanceGetChildren() throws DuplicatePortalObjectException, NoSuchPortalObjectException
+ /*
+ // This is commented out because this test is meant to test performance and takes a long time
+ // TODO: Should be moved to a performance test suite
+ public void testPerformanceToArray() throws NoSuchPortalObjectException, DuplicatePortalObjectException
{
Portal portal;
Page page;
@@ -155,6 +158,41 @@
long time = System.currentTimeMillis();
TransactionAssert.beginTransaction();
root.destroyChild(p_1.getName());
+ portal = root.createPortal("portal");
+ page = portal.createPage("page");
+ int nbPages = 200;
+ int nbWindows = 100;
+ for(int j = 0; j < nbPages; j++)
+ {
+ page.createPage("page" + j);
+ }
+ for (int k = 0; k < nbWindows; k++)
+ {
+ page.createWindow("window" + k, ContentType.PORTLET, "foo" + k);
+ }
+ TransactionAssert.commitTransaction();
+ System.out.println("Creation time = " + (System.currentTimeMillis() - time));
+
+ time = System.currentTimeMillis();
+ for (int i = 0; i < 100000; i++)
+ {
+ assertEquals(nbWindows, page.getChildren(PortalObject.WINDOW_MASK).toArray().length);
+ assertEquals(nbPages, page.getChildren(PortalObject.PAGE_MASK).toArray().length);
+ }
+ System.out.println("Tests time = " + (System.currentTimeMillis() - time));
+ }*/
+
+ /*
+ // This is commented out because this test is meant to test performance and takes a long time
+ // TODO: Should be moved to a performance test suite
+ public void testPerformanceGetChildren() throws DuplicatePortalObjectException, NoSuchPortalObjectException
+ {
+ Portal portal;
+ Page page;
+
+ long time = System.currentTimeMillis();
+ TransactionAssert.beginTransaction();
+ root.destroyChild(p_1.getName());
int nbPortals = 5;
int nbPages = 20;
int nbWindows = 20;
15 years, 5 months
JBoss Portal SVN: r12652 - docs/enterprise/trunk/PortletBridge/en-US.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2009-01-26 15:13:45 -0500 (Mon, 26 Jan 2009)
New Revision: 12652
Modified:
docs/enterprise/trunk/PortletBridge/en-US/Book_Info.xml
Log:
RF Beta6
Modified: docs/enterprise/trunk/PortletBridge/en-US/Book_Info.xml
===================================================================
--- docs/enterprise/trunk/PortletBridge/en-US/Book_Info.xml 2009-01-26 19:51:48 UTC (rev 12651)
+++ docs/enterprise/trunk/PortletBridge/en-US/Book_Info.xml 2009-01-26 20:13:45 UTC (rev 12652)
@@ -6,7 +6,7 @@
<title>Overview</title>
<subtitle>For use with JBoss Enterprise Portal Platform 4.3 </subtitle>
<productname>JBoss Portlet Bridge Beta</productname>
- <productnumber>5</productnumber>
+ <productnumber>6</productnumber>
<edition>1.0</edition>
<pubsnumber>5</pubsnumber>
<pubdate>Jan, 2009</pubdate>
15 years, 5 months
JBoss Portal SVN: r12651 - docs/enterprise/trunk/Installation_Guide/en-US.
by portal-commits@lists.jboss.org
Author: prabhat.jha(a)jboss.com
Date: 2009-01-26 14:51:48 -0500 (Mon, 26 Jan 2009)
New Revision: 12651
Modified:
docs/enterprise/trunk/Installation_Guide/en-US/Configuration.xml
Log:
new setup dir location in epp bundle
Modified: docs/enterprise/trunk/Installation_Guide/en-US/Configuration.xml
===================================================================
--- docs/enterprise/trunk/Installation_Guide/en-US/Configuration.xml 2009-01-26 19:32:22 UTC (rev 12650)
+++ docs/enterprise/trunk/Installation_Guide/en-US/Configuration.xml 2009-01-26 19:51:48 UTC (rev 12651)
@@ -24,7 +24,7 @@
<section id="sect-Portal_EAP-Configuration-Datasource_Descriptors">
<title>Datasource Descriptors</title>
<para>
- A Datasource descriptor is required for JBoss Portal to communicate with a database. Sample Datasource descriptor files are provided for the Hypersonic SQL, <trademark class="registered">Microsoft SQL Server</trademark>, MySQL, <trademark class="registered">Oracle</trademark>, and PostgreSQL databases. These can be found in the <filename>setup/</filename> subdirectory where the <computeroutput>EPP <replaceable>x.x.x</replaceable> binary distribution</computeroutput> file was extracted to. For example, if EPP was extracted into the <filename>/jboss/</filename> directory, the sample Datasource descriptors would be in the <filename>/jboss/jboss-epp-<replaceable>x.x.x</replaceable>/setup/</filename> directory.
+ A Datasource descriptor is required for JBoss Portal to communicate with a database. Sample Datasource descriptor files are provided for the Hypersonic SQL, <trademark class="registered">Microsoft SQL Server</trademark>, MySQL, <trademark class="registered">Oracle</trademark>, and PostgreSQL databases. These can be found in the <filename>setup/</filename> subdirectory where the <computeroutput>EPP <replaceable>x.x.x</replaceable> binary distribution</computeroutput> file was extracted to. For example, if EPP was extracted into the <filename>/jboss/</filename> directory, the sample Datasource descriptors would be in the <filename>/jboss/jboss-epp-<replaceable>x.x.x</replaceable>/jboss-as/docs/portal/setup</filename> directory.
</para>
<para>
The sample Datasource descriptors will work with default installations of external databases; however, you may need to configure the correct username and password. As well, the sample MySQL and PostgreSQL Datasource descriptors assume the name of the database to be <computeroutput>jbossportal</computeroutput>.
15 years, 5 months