gatein SVN: r3951 - in components/wsrp/trunk: consumer/src/main/java/org/gatein/wsrp/consumer and 6 other directories.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2010-08-27 08:49:41 -0400 (Fri, 27 Aug 2010)
New Revision: 3951
Modified:
components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/spec/v1/V1ToV2Converter.java
components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/spec/v1/V2ToV1Converter.java
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/WSRPConsumerImpl.java
components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/protocol/v1/PortletManagementTestCase.java
components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/protocol/v2/PortletManagementTestCase.java
components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/protocol/v1/behaviors/BasicPortletManagementBehavior.java
components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/protocol/v2/behaviors/BasicPortletManagementBehavior.java
components/wsrp/trunk/producer/src/main/java/org/gatein/wsrp/producer/handlers/PortletManagementHandler.java
components/wsrp/trunk/wsrp-producer-war/src/test/java/org/gatein/wsrp/protocol/v1/PortletManagementTestCase.java
Log:
- GTNWSRP-63: PortletManagementHandler now properly produces an InconsistentParameters exception when needed & added test case.
- Fixed BasicPortletManagementBehavior to be more useful in checking errors instead of magically producing expected output.
- Reactivated commented-out tests in PortletManagementTestCase (v1 & v2) on the consumer side and added test for proper handling of case when we try to set/reset a property in the same call.
- Fixed converters which weren't properly dealing with ResetProperties.
- WSRPConsumerImpl.getProperties should now behave more precisely in case of producer error.
Modified: components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/spec/v1/V1ToV2Converter.java
===================================================================
--- components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/spec/v1/V1ToV2Converter.java 2010-08-27 06:38:36 UTC (rev 3950)
+++ components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/spec/v1/V1ToV2Converter.java 2010-08-27 12:49:41 UTC (rev 3951)
@@ -684,6 +684,12 @@
result.getProperties().addAll(properties);
}
+ List<ResetProperty> resetProperties = WSRPUtils.transform(v1PropertyList.getResetProperties(), RESETPROPERTY);
+ if (resetProperties != null)
+ {
+ result.getResetProperties().addAll(resetProperties);
+ }
+
List<Extension> extensions = WSRPUtils.transform(v1PropertyList.getExtensions(), EXTENSION);
if (extensions != null)
{
Modified: components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/spec/v1/V2ToV1Converter.java
===================================================================
--- components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/spec/v1/V2ToV1Converter.java 2010-08-27 06:38:36 UTC (rev 3950)
+++ components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/spec/v1/V2ToV1Converter.java 2010-08-27 12:49:41 UTC (rev 3951)
@@ -809,6 +809,12 @@
result.getProperties().addAll(properties);
}
+ List<V1ResetProperty> resetProperties = WSRPUtils.transform(propertyList.getResetProperties(), RESETPROPERTY);
+ if (resetProperties != null)
+ {
+ result.getResetProperties().addAll(resetProperties);
+ }
+
List<V1Extension> extensions = WSRPUtils.transform(propertyList.getExtensions(), EXTENSION);
if (extensions != null)
{
Modified: components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/WSRPConsumerImpl.java
===================================================================
--- components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/WSRPConsumerImpl.java 2010-08-27 06:38:36 UTC (rev 3950)
+++ components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/WSRPConsumerImpl.java 2010-08-27 12:49:41 UTC (rev 3951)
@@ -25,6 +25,7 @@
import org.gatein.common.NotYetImplemented;
import org.gatein.common.util.ParameterValidation;
+import org.gatein.pc.api.InvalidPortletIdException;
import org.gatein.pc.api.InvokerUnavailableException;
import org.gatein.pc.api.NoSuchPortletException;
import org.gatein.pc.api.Portlet;
@@ -57,7 +58,10 @@
import org.gatein.wsrp.servlet.UserAccess;
import org.oasis.wsrp.v2.Extension;
import org.oasis.wsrp.v2.FailedPortlets;
+import org.oasis.wsrp.v2.InconsistentParameters;
+import org.oasis.wsrp.v2.InvalidHandle;
import org.oasis.wsrp.v2.Lifetime;
+import org.oasis.wsrp.v2.OperationNotSupported;
import org.oasis.wsrp.v2.Property;
import org.oasis.wsrp.v2.PropertyList;
import org.oasis.wsrp.v2.RegistrationContext;
@@ -318,11 +322,44 @@
return new SimplePropertyMap();
}
}
+ catch (OperationNotSupported operationNotSupported)
+ {
+ throw new UnsupportedOperationException(operationNotSupported);
+ }
+ catch (InvalidHandle invalidHandle)
+ {
+ throw new InvalidPortletIdException(invalidHandle, portletContext.getId());
+ }
+ catch (InconsistentParameters inconsistentParameters)
+ {
+ throw new IllegalArgumentException(inconsistentParameters);
+ }
+ /*
+ // GTNWSRP-62
+ catch (InvalidRegistration invalidRegistration)
+ {
+ }
+ catch (MissingParameters missingParameters)
+ {
+ }
+ catch (ResourceSuspended resourceSuspended)
+ {
+ }
+ catch (OperationFailed operationFailed)
+ {
+ }
+ catch (AccessDenied accessDenied)
+ {
+ }
+ catch (InvalidUserCategory invalidUserCategory)
+ {
+ }
+ catch (ModifyRegistrationRequired modifyRegistrationRequired)
+ {
+ }*/
catch (Exception e)
{
- // something went wrong but support for getPortletProperties is optional so return an empty PropertyMap
- log.debug("Couldn't get properties for portlet '" + portletContext.getId() + "'", e);
- return new SimplePropertyMap();
+ throw new PortletInvokerException(e);
}
}
Modified: components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/protocol/v1/PortletManagementTestCase.java
===================================================================
--- components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/protocol/v1/PortletManagementTestCase.java 2010-08-27 06:38:36 UTC (rev 3950)
+++ components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/protocol/v1/PortletManagementTestCase.java 2010-08-27 12:49:41 UTC (rev 3951)
@@ -27,7 +27,10 @@
import org.gatein.pc.api.PortletContext;
import org.gatein.pc.api.PortletInvokerException;
import org.gatein.pc.api.PortletStateType;
+import org.gatein.pc.api.info.MetaInfo;
import org.gatein.pc.api.state.DestroyCloneFailure;
+import org.gatein.pc.api.state.PropertyChange;
+import org.gatein.pc.api.state.PropertyMap;
import org.gatein.wsrp.test.ExtendedAssert;
import org.gatein.wsrp.test.protocol.v1.BehaviorRegistry;
import org.gatein.wsrp.test.protocol.v1.behaviors.BasicMarkupBehavior;
@@ -48,10 +51,10 @@
{
}
- /*public void testClone() throws Exception
+ public void testClone() throws Exception
{
PortletContext original = PortletContext.createPortletContext(BasicMarkupBehavior.PORTLET_HANDLE);
- PortletContext clone = consumer.createClone(original);
+ PortletContext clone = consumer.createClone(PortletStateType.OPAQUE, original);
ExtendedAssert.assertNotNull(clone);
ExtendedAssert.assertFalse(original.equals(clone));
ExtendedAssert.assertEquals(BasicPortletManagementBehavior.CLONED_HANDLE, clone.getId());
@@ -74,14 +77,14 @@
PropertyMap props = consumer.getProperties(original);
checkProperties(props, BasicPortletManagementBehavior.PROPERTY_VALUE);
- PortletContext clone = consumer.createClone(original);
+ PortletContext clone = consumer.createClone(PortletStateType.OPAQUE, original);
props = consumer.getProperties(clone);
checkProperties(props, BasicPortletManagementBehavior.PROPERTY_VALUE);
consumer.setProperties(clone, new PropertyChange[]
{
PropertyChange.newUpdate(BasicPortletManagementBehavior.PROPERTY_NAME,
- new StringValue(BasicPortletManagementBehavior.PROPERTY_NEW_VALUE))
+ BasicPortletManagementBehavior.PROPERTY_NEW_VALUE)
});
checkProperties(consumer.getProperties(clone), BasicPortletManagementBehavior.PROPERTY_NEW_VALUE);
@@ -92,13 +95,34 @@
checkProperties(consumer.getProperties(clone), BasicPortletManagementBehavior.PROPERTY_VALUE);
}
+ public void testSetResetSameProperty() throws PortletInvokerException
+ {
+ PortletContext original = PortletContext.createPortletContext(BasicMarkupBehavior.PORTLET_HANDLE);
+ PortletContext clone = consumer.createClone(PortletStateType.OPAQUE, original);
+
+ try
+ {
+ consumer.setProperties(clone, new PropertyChange[]
+ {
+ PropertyChange.newUpdate(BasicPortletManagementBehavior.PROPERTY_NAME,
+ BasicPortletManagementBehavior.PROPERTY_NEW_VALUE),
+ PropertyChange.newReset(BasicPortletManagementBehavior.PROPERTY_NAME)
+ });
+ fail("Shouldn't be possible to set and reset the same property in the same call");
+ }
+ catch (Exception e)
+ {
+ assertTrue(e.getCause().getLocalizedMessage().contains(BasicPortletManagementBehavior.CANNOT_BOTH_SET_AND_RESET_A_PROPERTY_AT_THE_SAME_TIME));
+ }
+ }
+
private void checkProperties(PropertyMap props, String expectedValue)
{
ExtendedAssert.assertNotNull(props);
ExtendedAssert.assertEquals(1, props.size());
ExtendedAssert.assertEquals(expectedValue,
- props.getProperty(BasicPortletManagementBehavior.PROPERTY_NAME).asString());
- }*/
+ props.getProperty(BasicPortletManagementBehavior.PROPERTY_NAME).get(0));
+ }
public void testDestroyClones() throws Exception
{
@@ -144,7 +168,7 @@
}
}
- /*public void testInvalidSetProperties() throws Exception
+ public void testInvalidSetProperties() throws Exception
{
PortletContext original = PortletContext.createPortletContext(BasicMarkupBehavior.PORTLET_HANDLE);
try
@@ -156,5 +180,5 @@
{
//expected
}
- }*/
+ }
}
Modified: components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/protocol/v2/PortletManagementTestCase.java
===================================================================
--- components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/protocol/v2/PortletManagementTestCase.java 2010-08-27 06:38:36 UTC (rev 3950)
+++ components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/protocol/v2/PortletManagementTestCase.java 2010-08-27 12:49:41 UTC (rev 3951)
@@ -27,7 +27,10 @@
import org.gatein.pc.api.PortletContext;
import org.gatein.pc.api.PortletInvokerException;
import org.gatein.pc.api.PortletStateType;
+import org.gatein.pc.api.info.MetaInfo;
import org.gatein.pc.api.state.DestroyCloneFailure;
+import org.gatein.pc.api.state.PropertyChange;
+import org.gatein.pc.api.state.PropertyMap;
import org.gatein.wsrp.test.ExtendedAssert;
import org.gatein.wsrp.test.protocol.v2.BehaviorRegistry;
import org.gatein.wsrp.test.protocol.v2.behaviors.BasicMarkupBehavior;
@@ -48,10 +51,10 @@
{
}
- /*public void testClone() throws Exception
+ public void testClone() throws Exception
{
PortletContext original = PortletContext.createPortletContext(BasicMarkupBehavior.PORTLET_HANDLE);
- PortletContext clone = consumer.createClone(original);
+ PortletContext clone = consumer.createClone(PortletStateType.OPAQUE, original);
ExtendedAssert.assertNotNull(clone);
ExtendedAssert.assertFalse(original.equals(clone));
ExtendedAssert.assertEquals(BasicPortletManagementBehavior.CLONED_HANDLE, clone.getId());
@@ -74,14 +77,14 @@
PropertyMap props = consumer.getProperties(original);
checkProperties(props, BasicPortletManagementBehavior.PROPERTY_VALUE);
- PortletContext clone = consumer.createClone(original);
+ PortletContext clone = consumer.createClone(PortletStateType.OPAQUE, original);
props = consumer.getProperties(clone);
checkProperties(props, BasicPortletManagementBehavior.PROPERTY_VALUE);
consumer.setProperties(clone, new PropertyChange[]
{
PropertyChange.newUpdate(BasicPortletManagementBehavior.PROPERTY_NAME,
- new StringValue(BasicPortletManagementBehavior.PROPERTY_NEW_VALUE))
+ BasicPortletManagementBehavior.PROPERTY_NEW_VALUE)
});
checkProperties(consumer.getProperties(clone), BasicPortletManagementBehavior.PROPERTY_NEW_VALUE);
@@ -92,13 +95,33 @@
checkProperties(consumer.getProperties(clone), BasicPortletManagementBehavior.PROPERTY_VALUE);
}
+ public void testSetResetSameProperty() throws PortletInvokerException
+ {
+ PortletContext original = PortletContext.createPortletContext(BasicMarkupBehavior.PORTLET_HANDLE);
+ PortletContext clone = consumer.createClone(PortletStateType.OPAQUE, original);
+
+ try
+ {
+ consumer.setProperties(clone, new PropertyChange[]
+ {
+ PropertyChange.newUpdate(BasicPortletManagementBehavior.PROPERTY_NAME,
+ BasicPortletManagementBehavior.PROPERTY_NEW_VALUE),
+ PropertyChange.newReset(BasicPortletManagementBehavior.PROPERTY_NAME)
+ });
+ fail("Shouldn't be possible to set and reset the same property in the same call");
+ }
+ catch (Exception e)
+ {
+ assertTrue(e.getCause().getLocalizedMessage().contains(BasicPortletManagementBehavior.CANNOT_BOTH_SET_AND_RESET_A_PROPERTY_AT_THE_SAME_TIME));
+ }
+ }
+
private void checkProperties(PropertyMap props, String expectedValue)
{
ExtendedAssert.assertNotNull(props);
ExtendedAssert.assertEquals(1, props.size());
- ExtendedAssert.assertEquals(expectedValue,
- props.getProperty(BasicPortletManagementBehavior.PROPERTY_NAME).asString());
- }*/
+ ExtendedAssert.assertEquals(expectedValue, props.getProperty(BasicPortletManagementBehavior.PROPERTY_NAME).get(0));
+ }
public void testDestroyClones() throws Exception
{
@@ -144,7 +167,7 @@
}
}
- /*public void testInvalidSetProperties() throws Exception
+ public void testInvalidSetProperties() throws Exception
{
PortletContext original = PortletContext.createPortletContext(BasicMarkupBehavior.PORTLET_HANDLE);
try
@@ -156,5 +179,5 @@
{
//expected
}
- }*/
+ }
}
Modified: components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/protocol/v1/behaviors/BasicPortletManagementBehavior.java
===================================================================
--- components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/protocol/v1/behaviors/BasicPortletManagementBehavior.java 2010-08-27 06:38:36 UTC (rev 3950)
+++ components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/protocol/v1/behaviors/BasicPortletManagementBehavior.java 2010-08-27 12:49:41 UTC (rev 3951)
@@ -23,6 +23,7 @@
package org.gatein.wsrp.test.protocol.v1.behaviors;
+import org.gatein.common.util.ParameterValidation;
import org.gatein.wsrp.spec.v1.WSRP1ExceptionFactory;
import org.gatein.wsrp.spec.v1.WSRP1TypeFactory;
import org.gatein.wsrp.test.protocol.v1.BehaviorRegistry;
@@ -63,7 +64,9 @@
public static final String PROPERTY_VALUE = "value1";
public static final String PROPERTY_NEW_VALUE = "value2";
public static final String CLONED_HANDLE = BasicMarkupBehavior.PORTLET_HANDLE + CLONE_SUFFIX;
+ public static final String CANNOT_BOTH_SET_AND_RESET_A_PROPERTY_AT_THE_SAME_TIME = "Cannot both set and reset a property at the same time!";
private BehaviorRegistry registry;
+ private String propValue = PROPERTY_VALUE;
public BasicPortletManagementBehavior(BehaviorRegistry registry)
{
@@ -125,18 +128,18 @@
}
else if (CLONED_HANDLE.equals(handle))
{
- if (callCount != 2)
+ if (propValue != null)
{
- propertyList.add(WSRP1TypeFactory.createProperty(PROPERTY_NAME, "en", PROPERTY_VALUE));
+ propertyList.add(WSRP1TypeFactory.createProperty(PROPERTY_NAME, "en", propValue));
}
- else
+ if (callCount > 4)
{
- propertyList.add(WSRP1TypeFactory.createProperty(PROPERTY_NAME, "en", PROPERTY_NEW_VALUE));
+ throw new IllegalStateException("Shouldn't have been called more than four times!");
}
}
else
{
- WSRP1ExceptionFactory.throwWSException(V1OperationFailed.class, "Cannot modify portlet '" + handle + "'", null);
+ WSRP1ExceptionFactory.throwWSException(V1InvalidHandle.class, "Unknown handle '" + handle + "'", null);
}
incrementCallCount();
@@ -153,6 +156,64 @@
throw WSRP1ExceptionFactory.throwWSException(V1OperationFailed.class, "Cannot modify portlet '" + handle + "'", null);
}
+ List<V1Property> properties = propertyList.getProperties();
+ List<V1ResetProperty> resetProperties = propertyList.getResetProperties();
+
+ // check that we don't try to set and reset the same property
+ if (ParameterValidation.existsAndIsNotEmpty(properties) && ParameterValidation.existsAndIsNotEmpty(resetProperties))
+ {
+ if (properties.size() != 1 && resetProperties.size() != 1)
+ {
+ WSRP1ExceptionFactory.throwWSException(V1InconsistentParameters.class, "Invalid number of properties!", null);
+ }
+
+ if (properties.get(0).getName().equals(resetProperties.get(0).getName()))
+ {
+ WSRP1ExceptionFactory.throwWSException(V1InconsistentParameters.class, CANNOT_BOTH_SET_AND_RESET_A_PROPERTY_AT_THE_SAME_TIME, null);
+ }
+ }
+
+ // if we have the expected property name, update the value
+ if (ParameterValidation.existsAndIsNotEmpty(properties))
+ {
+ if (properties.size() != 1)
+ {
+ WSRP1ExceptionFactory.throwWSException(V1InconsistentParameters.class, "Invalid number of properties!", null);
+ }
+
+ V1Property property = properties.get(0);
+ String name = property.getName();
+ if (name.equals(PROPERTY_NAME))
+ {
+ propValue = property.getStringValue();
+ }
+ else
+ {
+ WSRP1ExceptionFactory.throwWSException(V1InconsistentParameters.class, "Unknown property '" + name + "'", null);
+ }
+ }
+
+ // if we have the proper reset property, reset it
+ if (ParameterValidation.existsAndIsNotEmpty(resetProperties))
+ {
+ if (resetProperties.size() != 1)
+ {
+ WSRP1ExceptionFactory.throwWSException(V1InconsistentParameters.class, "Invalid number of reset properties!", null);
+ }
+
+ V1ResetProperty resetProperty = resetProperties.get(0);
+ String name = resetProperty.getName();
+ if (name.equals(PROPERTY_NAME))
+ {
+ propValue = PROPERTY_VALUE;
+ }
+ else
+ {
+ WSRP1ExceptionFactory.throwWSException(V1InconsistentParameters.class, "Unknown property '" + name + "'", null);
+ }
+ }
+
+
portletHandle.value = handle;
}
Modified: components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/protocol/v2/behaviors/BasicPortletManagementBehavior.java
===================================================================
--- components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/protocol/v2/behaviors/BasicPortletManagementBehavior.java 2010-08-27 06:38:36 UTC (rev 3950)
+++ components/wsrp/trunk/consumer/src/test/java/org/gatein/wsrp/test/protocol/v2/behaviors/BasicPortletManagementBehavior.java 2010-08-27 12:49:41 UTC (rev 3951)
@@ -24,6 +24,7 @@
package org.gatein.wsrp.test.protocol.v2.behaviors;
import org.gatein.common.NotYetImplemented;
+import org.gatein.common.util.ParameterValidation;
import org.gatein.wsrp.WSRPTypeFactory;
import org.gatein.wsrp.spec.v2.ErrorCodes;
import org.gatein.wsrp.spec.v2.WSRP2ExceptionFactory;
@@ -63,6 +64,7 @@
import org.oasis.wsrp.v2.UserContext;
import javax.jws.WebParam;
+import javax.xml.namespace.QName;
import javax.xml.ws.Holder;
import java.util.ArrayList;
import java.util.List;
@@ -79,7 +81,9 @@
public static final String PROPERTY_VALUE = "value1";
public static final String PROPERTY_NEW_VALUE = "value2";
public static final String CLONED_HANDLE = BasicMarkupBehavior.PORTLET_HANDLE + CLONE_SUFFIX;
+ public static final String CANNOT_BOTH_SET_AND_RESET_A_PROPERTY_AT_THE_SAME_TIME = "Cannot both set and reset a property at the same time!";
private BehaviorRegistry registry;
+ private String propValue = PROPERTY_VALUE;
public BasicPortletManagementBehavior(BehaviorRegistry registry)
{
@@ -213,6 +217,64 @@
throw WSRP2ExceptionFactory.throwWSException(OperationFailed.class, "Cannot modify portlet '" + handle + "'", null);
}
+ List<Property> properties = propertyList.getProperties();
+ List<ResetProperty> resetProperties = propertyList.getResetProperties();
+
+ // check that we don't try to set and reset the same property
+ if (ParameterValidation.existsAndIsNotEmpty(properties) && ParameterValidation.existsAndIsNotEmpty(resetProperties))
+ {
+ if (properties.size() != 1 && resetProperties.size() != 1)
+ {
+ WSRP2ExceptionFactory.throwWSException(InconsistentParameters.class, "Invalid number of properties!", null);
+ }
+
+ if (properties.get(0).getName().equals(resetProperties.get(0).getName()))
+ {
+ WSRP2ExceptionFactory.throwWSException(InconsistentParameters.class, CANNOT_BOTH_SET_AND_RESET_A_PROPERTY_AT_THE_SAME_TIME, null);
+ }
+ }
+
+ // if we have the expected property name, update the value
+ if (ParameterValidation.existsAndIsNotEmpty(properties))
+ {
+ if (properties.size() != 1)
+ {
+ WSRP2ExceptionFactory.throwWSException(InconsistentParameters.class, "Invalid number of properties!", null);
+ }
+
+ Property property = properties.get(0);
+ QName name = property.getName();
+ if (name.getLocalPart().equals(PROPERTY_NAME))
+ {
+ propValue = property.getStringValue();
+ }
+ else
+ {
+ WSRP2ExceptionFactory.throwWSException(InconsistentParameters.class, "Unknown property '" + name + "'", null);
+ }
+ }
+
+ // if we have the proper reset property, reset it
+ if (ParameterValidation.existsAndIsNotEmpty(resetProperties))
+ {
+ if (resetProperties.size() != 1)
+ {
+ WSRP2ExceptionFactory.throwWSException(InconsistentParameters.class, "Invalid number of reset properties!", null);
+ }
+
+ ResetProperty resetProperty = resetProperties.get(0);
+ QName name = resetProperty.getName();
+ if (name.getLocalPart().equals(PROPERTY_NAME))
+ {
+ propValue = PROPERTY_VALUE;
+ }
+ else
+ {
+ WSRP2ExceptionFactory.throwWSException(InconsistentParameters.class, "Unknown property '" + name + "'", null);
+ }
+ }
+
+
portletHandle.value = handle;
}
@@ -229,13 +291,13 @@
}
else if (CLONED_HANDLE.equals(handle))
{
- if (callCount != 2)
+ if (propValue != null)
{
- propertyList.add(WSRPTypeFactory.createProperty(PROPERTY_NAME, "en", PROPERTY_VALUE));
+ propertyList.add(WSRPTypeFactory.createProperty(PROPERTY_NAME, "en", propValue));
}
- else
+ if (callCount > 4)
{
- propertyList.add(WSRPTypeFactory.createProperty(PROPERTY_NAME, "en", PROPERTY_NEW_VALUE));
+ throw new IllegalStateException("Shouldn't have been called more than four times!");
}
}
else
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/wsrp/producer/handlers/PortletManagementHandler.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/wsrp/producer/handlers/PortletManagementHandler.java 2010-08-27 06:38:36 UTC (rev 3950)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/wsrp/producer/handlers/PortletManagementHandler.java 2010-08-27 12:49:41 UTC (rev 3951)
@@ -23,12 +23,14 @@
package org.gatein.wsrp.producer.handlers;
+import com.google.common.base.Function;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import org.gatein.common.NotYetImplemented;
import org.gatein.common.i18n.LocalizedString;
import org.gatein.common.logging.Logger;
import org.gatein.common.logging.LoggerFactory;
+import org.gatein.common.util.ParameterValidation;
import org.gatein.exports.data.ExportContext;
import org.gatein.exports.data.ExportPortletData;
import org.gatein.pc.api.InvalidPortletIdException;
@@ -103,6 +105,7 @@
import org.oasis.wsrp.v2.SetPortletsLifetimeResponse;
import org.oasis.wsrp.v2.UserContext;
+import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -329,11 +332,36 @@
List<Property> properties = propertyList.getProperties();
List<ResetProperty> resetProperties = propertyList.getResetProperties();
int changesCount = 0;
- if (properties != null)
+ if (ParameterValidation.existsAndIsNotEmpty(properties))
{
changesCount += properties.size();
+
+ // check that we don't set and reset the same property
+ if (ParameterValidation.existsAndIsNotEmpty(resetProperties))
+ {
+ List<QName> names = new ArrayList<QName>(WSRPUtils.transform(properties, new Function<Property, QName>()
+ {
+ public QName apply(Property from)
+ {
+ return from.getName();
+ }
+ }));
+ names.retainAll(WSRPUtils.transform(resetProperties, new Function<ResetProperty, QName>()
+ {
+ public QName apply(ResetProperty from)
+ {
+ return from.getName();
+ }
+ }));
+
+ if (!names.isEmpty())
+ {
+ WSRP2ExceptionFactory.throwWSException(InconsistentParameters.class,
+ "Attempted to set and reset at the same time the following properties: " + names, null);
+ }
+ }
}
- if (resetProperties != null)
+ if (ParameterValidation.existsAndIsNotEmpty(resetProperties))
{
changesCount += resetProperties.size();
}
@@ -595,7 +623,7 @@
ResourceList resourceList = null;
byte[] exportContextBytes = producer.getExportManager().encodeExportContextData(exportContext);
-
+
return WSRPTypeFactory.createExportPortletsResponse(exportContextBytes, exportedPortlets, new ArrayList<FailedPortlets>(failedPortletsMap.values()), exportContext.getLifeTime(), resourceList);
}
catch (Exception e)
@@ -747,7 +775,7 @@
{
WSRP2ExceptionFactory.throwWSException(OperationNotSupported.class, "This producer does not support export by reference.", null);
}
-
+
WSRP2ExceptionFactory.throwOperationFailedIfValueIsMissing(setExportLifetime, "setExportLifetimePortlets");
byte[] exportContextBytes = setExportLifetime.getExportContext();
Modified: components/wsrp/trunk/wsrp-producer-war/src/test/java/org/gatein/wsrp/protocol/v1/PortletManagementTestCase.java
===================================================================
--- components/wsrp/trunk/wsrp-producer-war/src/test/java/org/gatein/wsrp/protocol/v1/PortletManagementTestCase.java 2010-08-27 06:38:36 UTC (rev 3950)
+++ components/wsrp/trunk/wsrp-producer-war/src/test/java/org/gatein/wsrp/protocol/v1/PortletManagementTestCase.java 2010-08-27 12:49:41 UTC (rev 3951)
@@ -90,27 +90,27 @@
jar.addClass(WSRPProducerBaseTest.class);
return jar;
}
-
+
@Before
public void setUp() throws Exception
{
if (System.getProperty("test.deployables.dir") != null)
{
- super.setUp();
- //hack to get around having to have a httpservletrequest when accessing the producer services
- //I don't know why its really needed, seems to be a dependency where wsrp connects with the pc module
- ServletAccess.setRequestAndResponse(MockHttpServletRequest.createMockRequest(null), MockHttpServletResponse.createMockResponse());
+ super.setUp();
+ //hack to get around having to have a httpservletrequest when accessing the producer services
+ //I don't know why its really needed, seems to be a dependency where wsrp connects with the pc module
+ ServletAccess.setRequestAndResponse(MockHttpServletRequest.createMockRequest(null), MockHttpServletResponse.createMockResponse());
}
}
-
-
+
+
@After
public void tearDown() throws Exception
{
- if (System.getProperty("test.deployables.dir") != null)
- {
- super.tearDown();
- }
+ if (System.getProperty("test.deployables.dir") != null)
+ {
+ super.tearDown();
+ }
}
@Test
@@ -180,7 +180,7 @@
response = producer.destroyPortlets(destroyPortlets);
ExtendedAssert.assertNotNull(response);
failures = response.getDestroyFailed();
-
+
ExtendedAssert.assertTrue("Got back failures when none expected :" + failures, (failures == null || failures.isEmpty()));
}
@@ -350,6 +350,28 @@
}
@Test
+ public void testSetResetSamePortletProperty() throws Exception
+ {
+ String handle = getDefaultHandle();
+
+ V1PortletContext portletContext = clonePortlet(handle);
+ V1PropertyList propertyList = WSRP1TypeFactory.createPropertyList();
+ propertyList.getProperties().add(WSRP1TypeFactory.createProperty("prefName1", "en", "newPrefValue1"));
+ propertyList.getResetProperties().add(WSRP1TypeFactory.createResetProperty("prefName1"));
+ V1SetPortletProperties setPortletProperties = WSRP1TypeFactory.createSetPortletProperties(null, portletContext, propertyList);
+
+ try
+ {
+ producer.setPortletProperties(setPortletProperties);
+ fail("Shouldn't be possible to set and reset a property in the same call");
+ }
+ catch (V1InconsistentParameters v1InconsistentParameters)
+ {
+ // expected
+ }
+ }
+
+ @Test
public void testSetPortletPropertiesNoRegistrationWhenRequired()
{
producer.getConfigurationService().getConfiguration().getRegistrationRequirements().setRegistrationRequired(true);
14 years, 4 months
gatein SVN: r3950 - portal/branches/branched-r3845/webui/portal/src/main/java/org/exoplatform/portal/webui/application.
by do-not-reply@jboss.org
Author: trong.tran
Date: 2010-08-27 02:38:36 -0400 (Fri, 27 Aug 2010)
New Revision: 3950
Modified:
portal/branches/branched-r3845/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletActionListener.java
Log:
GTNPORTAL-1446 Setting of portlet window state does not work
Modified: portal/branches/branched-r3845/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletActionListener.java
===================================================================
--- portal/branches/branched-r3845/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletActionListener.java 2010-08-27 04:50:15 UTC (rev 3949)
+++ portal/branches/branched-r3845/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletActionListener.java 2010-08-27 06:38:36 UTC (rev 3950)
@@ -277,7 +277,7 @@
if (state != null)
{
UIPage uiPage = uiPortlet.getAncestorOfType(UIPage.class);
- if (state == WindowState.MAXIMIZED)
+ if (WindowState.MAXIMIZED.equals(state))
{
uiPortlet.setCurrentWindowState(WindowState.MAXIMIZED);
if (uiPage != null)
@@ -285,7 +285,7 @@
uiPage.setMaximizedUIPortlet(uiPortlet);
}
}
- else if (state == WindowState.MINIMIZED)
+ else if (WindowState.MINIMIZED.equals(state))
{
uiPortlet.setCurrentWindowState(WindowState.MINIMIZED);
if (uiPage != null)
14 years, 4 months
gatein SVN: r3949 - portal/branches/branched-r3845/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component.
by do-not-reply@jboss.org
Author: phuong_vu
Date: 2010-08-27 00:50:15 -0400 (Fri, 27 Aug 2010)
New Revision: 3949
Modified:
portal/branches/branched-r3845/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIApplicationForm.java
Log:
GTNPORTAL-1393 Breadcrumb is incorrectly after edit portlet in Application Registry
Modified: portal/branches/branched-r3845/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIApplicationForm.java
===================================================================
--- portal/branches/branched-r3845/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIApplicationForm.java 2010-08-27 04:14:26 UTC (rev 3948)
+++ portal/branches/branched-r3845/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIApplicationForm.java 2010-08-27 04:50:15 UTC (rev 3949)
@@ -20,6 +20,7 @@
package org.exoplatform.applicationregistry.webui.component;
import org.exoplatform.application.registry.Application;
+import org.exoplatform.application.registry.ApplicationCategory;
import org.exoplatform.application.registry.ApplicationRegistryService;
import org.exoplatform.portal.application.PortalRequestContext;
import org.exoplatform.portal.webui.portal.UIPortal;
@@ -112,8 +113,9 @@
application.setDisplayName(application.getApplicationName());
}
service.update(application);
- //uiOrganizer.setSelectedApplication(uiOrganizer.getSelectedApplication());
+ ApplicationCategory selectedCat = uiOrganizer.getSelectedCategory();
uiOrganizer.reload();
+ uiOrganizer.setSelectedCategory(selectedCat);
uiOrganizer.setSelectedApplication(application);
ctx.addUIComponentToUpdateByAjax(uiOrganizer);
}
14 years, 4 months
gatein SVN: r3948 - epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US.
by do-not-reply@jboss.org
Author: smumford
Date: 2010-08-27 00:14:26 -0400 (Fri, 27 Aug 2010)
New Revision: 3948
Modified:
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/Book_Info.xml
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/Revision_History.xml
Log:
Incrementing for new stage build
Modified: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/Book_Info.xml 2010-08-27 03:59:55 UTC (rev 3947)
+++ epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/Book_Info.xml 2010-08-27 04:14:26 UTC (rev 3948)
@@ -9,7 +9,7 @@
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.0</productnumber>
<edition>1</edition>
- <pubsnumber>1.7</pubsnumber>
+ <pubsnumber>1.8</pubsnumber>
<abstract>
<para>
This Reference Guide is a high-level usage document. It deals with more advanced topics than the Installation and User Guides, adding new content or taking concepts discussed in the earlier documents further. It aims to provide supporting documentation for advanced users of the &PRODUCT; product. Its primary focus is on advanced use of the product and it assumes an intermediate or advanced knowledge of the technology and terms.
Modified: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/Revision_History.xml 2010-08-27 03:59:55 UTC (rev 3947)
+++ epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/Revision_History.xml 2010-08-27 04:14:26 UTC (rev 3948)
@@ -8,6 +8,20 @@
<simpara>
<revhistory>
<revision>
+ <revnumber>1.8</revnumber>
+ <date>Fri Aug 27 2010</date>
+ <author>
+ <firstname>Scott</firstname>
+ <surname>Mumford</surname>
+ <email>smumford(a)redhat.com</email>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>Added new concept definitions to JCR chapter (ongoing). Added icons/ as workaround build bug.</member>
+ </simplelist>
+ </revdescription>
+ </revision>
+ <revision>
<revnumber>1.7</revnumber>
<date>Mon Aug 9 2010</date>
<author>
14 years, 4 months
gatein SVN: r3947 - epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/images/PortalDevelopment/Skinning.
by do-not-reply@jboss.org
Author: smumford
Date: 2010-08-26 23:59:55 -0400 (Thu, 26 Aug 2010)
New Revision: 3947
Modified:
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/images/PortalDevelopment/Skinning/decoratorPattern.png
Log:
JBEPP-438: Included updated decoratorPattern.png image
Modified: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/images/PortalDevelopment/Skinning/decoratorPattern.png
===================================================================
(Binary files differ)
14 years, 4 months
gatein SVN: r3946 - in epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US: extras/PortalDevelopment_DefaultPortalNavigationConfiguration and 5 other directories.
by do-not-reply@jboss.org
Author: smumford
Date: 2010-08-26 23:46:39 -0400 (Thu, 26 Aug 2010)
New Revision: 3946
Added:
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/extras/PortalDevelopment_DefaultPortalNavigationConfiguration/subpage.xml
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/icons/
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/icons/icon.svg
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/images/Advanced/JCR/repository_diagram.png
Modified:
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/configuration-persister.xml
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/configuration.xml
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/intro.xml
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/jdbc-data-container-config.xml
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml
epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/WSRP.xml
Log:
JBEPP-438: Added new concept definitions to JCR chapter (ongoing). Added icons/ as workaround build bug"
Added: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/extras/PortalDevelopment_DefaultPortalNavigationConfiguration/subpage.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/extras/PortalDevelopment_DefaultPortalNavigationConfiguration/subpage.xml (rev 0)
+++ epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/extras/PortalDevelopment_DefaultPortalNavigationConfiguration/subpage.xml 2010-08-27 03:46:39 UTC (rev 3946)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node>
+ <uri>page</uri>
+ <name>page</name>
+ <label>Page</label>
+ <visibility>DISPLAYED</visibility>
+ <page-reference>portal::classic::page</page-reference>
+ <node>
+ <uri>page/subpage</uri>
+ <name>subpage</name>
+ <label>Sub-page</label>
+ <visibility>DISPLAYED</visibility>
+ <page-reference>portal::classic::subpage</page-reference>
+ </node>
+</node>
\ No newline at end of file
Added: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/icons/icon.svg
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/icons/icon.svg (rev 0)
+++ epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/icons/icon.svg 2010-08-27 03:46:39 UTC (rev 3946)
@@ -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>
Added: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/images/Advanced/JCR/repository_diagram.png
===================================================================
(Binary files differ)
Property changes on: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/images/Advanced/JCR/repository_diagram.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/configuration-persister.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/configuration-persister.xml 2010-08-27 02:41:47 UTC (rev 3945)
+++ epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/configuration-persister.xml 2010-08-27 03:46:39 UTC (rev 3946)
@@ -3,7 +3,7 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "../../../Reference_Guide.ent">
%BOOK_ENTITIES;
]>
-<section id="sect-Reference_Guide-The_The_JCR_Configuration_persister">
+<section id="sect-Reference_Guide-The_JCR_Configuration_persister">
<title>The JCR Configuration persister</title>
<para>
@@ -44,9 +44,9 @@
</para>
<programlistingco>
<areaspec>
- <area coords="13 80" id="Reference_Guide-The_The_JCR_Configuration_persister-source-name"/>
- <area coords="14 80" id="Reference_Guide-The_The_JCR_Configuration_persister-dialect"/>
- <area coords="15 80" id="Reference_Guide-The_The_JCR_Configuration_persister-persister-class-name"/>
+ <area coords="13 80" id="Reference_Guide-The_JCR_Configuration_persister-source-name"/>
+ <area coords="14 80" id="Reference_Guide-The_JCR_Configuration_persister-dialect"/>
+ <area coords="15 80" id="Reference_Guide-The_JCR_Configuration_persister-persister-class-name"/>
</areaspec>
<programlisting language="XML" role="XML"><xi:include parse="text" href="../../../extras/Advanced_Development_JCR_configuration-persister/default21.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
@@ -72,17 +72,17 @@
<calloutlist>
- <callout arearefs="Reference_Guide-The_The_JCR_Configuration_persister-source-name">
+ <callout arearefs="Reference_Guide-The_JCR_Configuration_persister-source-name">
<para>
- The <parameter>source-name</parameter> parameter is the JNDI source name configured in <classname>InitialContextInitializer</classname> component (also known as <parameter>sourceName</parameter> in versions prior to 1.9.). Refer to <xref linkend="sect-Reference_Guide-eXo_JCR_configuration"/> for more information.
+ The <parameter>source-name</parameter> parameter is the JNDI source name configured in <classname>InitialContextInitializer</classname> component (also known as <parameter>sourceName</parameter> in versions prior to 1.9.). Refer to <xref linkend="sect-Reference_Guide-JCR_configuration"/> for more information.
</para>
</callout>
- <callout arearefs="Reference_Guide-The_The_JCR_Configuration_persister-dialect">
+ <callout arearefs="Reference_Guide-The_JCR_Configuration_persister-dialect">
<para>
- The <parameter>dialect</parameter> parameter is the SQL dialect which will be used with the database from <parameter>source-name</parameter>. Refer to <xref linkend="sect-Reference_Guide-eXo_JCR_configuration"/> for more information.
+ The <parameter>dialect</parameter> parameter is the SQL dialect which will be used with the database from <parameter>source-name</parameter>. Refer to <xref linkend="sect-Reference_Guide-JCR_configuration"/> for more information.
</para>
</callout>
- <callout arearefs="Reference_Guide-The_The_JCR_Configuration_persister-persister-class-name">
+ <callout arearefs="Reference_Guide-The_JCR_Configuration_persister-persister-class-name">
<para>
The <parameter>persister-class-name</parameter> parameter is the class name of the <classname>ConfigurationPersister</classname> interface implementation (known as <parameter>persisterClassName</parameter> in versions earlier than 1.9.)
</para>
Modified: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/configuration.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/configuration.xml 2010-08-27 02:41:47 UTC (rev 3945)
+++ epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/configuration.xml 2010-08-27 03:46:39 UTC (rev 3946)
@@ -3,341 +3,237 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "../../../Reference_Guide.ent">
%BOOK_ENTITIES;
]>
-<section id="sect-Reference_Guide-eXo_JCR_configuration">
- <title>eXo JCR configuration</title>
+<section id="sect-Reference_Guide-JCR_configuration">
+ <title>JCR configuration</title>
<para>
- The JCR configuration is defined in an XML file (as per the DTD below).
+ The JCR configuration is defined in an XML file which is constructed as per the DTD below:
</para>
+
+<programlisting language="Java" role="Java"><xi:include parse="text" href="../../../extras/Advanced_Development_JCR_Configuration/NMTOKEN.java" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
+
+<!--<programlisting><!ELEMENT repository-service (repositories)>
+ <!ATTLIST repository-service default-repository NMTOKEN #REQUIRED>
+ <!ELEMENT repositories (repository)>
+ <!ELEMENT repository (security-domain,access-control,session-max-age,authentication-policy,workspaces)>
+ <!ATTLIST repository
+ default-workspace NMTOKEN #REQUIRED
+ name NMTOKEN #REQUIRED
+ system-workspace NMTOKEN #REQUIRED
+ >
+ <!ELEMENT security-domain (#PCDATA)>
+ <!ELEMENT access-control (#PCDATA)>
+ <!ELEMENT session-max-age (#PCDATA)>
+ <!ELEMENT authentication-policy (#PCDATA)>
+ <!ELEMENT workspaces (workspace+)>
+ <!ELEMENT workspace (container,initializer,cache,query-handler)>
+ <!ATTLIST workspace name NMTOKEN #REQUIRED>
+ <!ELEMENT container (properties,value-storages)>
+ <!ATTLIST container class NMTOKEN #REQUIRED>
+ <!ELEMENT value-storages (value-storage+)>
+ <!ELEMENT value-storage (properties,filters)>
+ <!ATTLIST value-storage class NMTOKEN #REQUIRED>
+ <!ELEMENT filters (filter+)>
+ <!ELEMENT filter EMPTY>
+ <!ATTLIST filter property-type NMTOKEN #REQUIRED>
+ <!ELEMENT initializer (properties)>
+ <!ATTLIST initializer class NMTOKEN #REQUIRED>
+ <!ELEMENT cache (properties)>
+ <!ATTLIST cache
+ enabled NMTOKEN #REQUIRED
+ class NMTOKEN #REQUIRED
+ >
+ <!ELEMENT query-handler (properties)>
+ <!ATTLIST query-handler class NMTOKEN #REQUIRED>
+ <!ELEMENT access-manager (properties)>
+ <!ATTLIST access-manager class NMTOKEN #REQUIRED>
+ <!ELEMENT lock-manager (time-out,persister)>
+ <!ELEMENT time-out (#PCDATA)>
+ <!ELEMENT persister (properties)>
+ <!ELEMENT properties (property+)>
+ <!ELEMENT property EMPTY>
+</programlisting>-->
<para>
- The JCR Service can use multiple repositories and each repository can have multiple workspaces.
+ To configure the JCR Service;
</para>
-<!--DOC TODO Add more definition of respositories and workspaces -->
- <para>
- The repository configuration parameters support human-readable formats of values. They are not case-sensitive.
- </para>
- <para>
- The parameters are:
- </para>
- <variablelist>
- <varlistentry>
- <term>Number formats:</term>
- <listitem>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">K</emphasis> or <emphasis role="bold">KB</emphasis> for kiloBytes.
- </para>
- </listitem>
+ <procedure>
+ <step>
+ <para>
+ Familiarize yourself with the DTD file above and the either the example configuration file below or the one in your &PRODUCT; deployment (found at; <filename>/jboss-as/server/<replaceable><configuration></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>).
+ </para>
+ </step>
+ <step>
+ <para>
+ Replace the element values marked below with those of your deployment environment.
+ </para>
+ </step>
+ <step>
+ <para>
+ The repository configuration supports human-readable values. They are not case-sensitive.
+ </para>
+ <para>
+ Complete the appropriate element fields using the following value formats:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Number formats:</term>
<listitem>
<para>
- <emphasis role="bold">M</emphasis> or <emphasis role="bold">MB</emphasis> for megaBytes.
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">K</emphasis> or <emphasis role="bold">KB</emphasis> for kiloBytes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">M</emphasis> or <emphasis role="bold">MB</emphasis> for megaBytes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">G</emphasis> or <emphasis role="bold">GB</emphasis> for gigaBytes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">T</emphasis> or <emphasis role="bold">TB</emphasis> for terraBytes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Examples: 200k or 200 KBytes; 4m or 4 MBytes; 1.4G or 1.4 GBytes; 10T or 10 TBytes
+ </para>
+ </listitem>
+ </itemizedlist>
</para>
</listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Time formats:</term>
<listitem>
<para>
- <emphasis role="bold">G</emphasis> or <emphasis role="bold">GB</emphasis> for gigaBytes.
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">ms</emphasis> for milliseconds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">s</emphasis> for seconds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">m</emphasis> for minutes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">h</emphasis> for hours.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">d</emphasis> for days.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">w</emphasis> for weeks.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The default time format is seconds if no other format is specified.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Examples: 500ms or 500 milliseconds; 20, 20s or 20 seconds; 30m or 30 minutes; 12h or 12 hours; 5d or 5 days; 4w or 4 weeks.
+ </para>
+ </listitem>
+ </itemizedlist>
</para>
</listitem>
- <listitem>
- <para>
- <emphasis role="bold">T</emphasis> or <emphasis role="bold">TB</emphasis> for terraBytes.
- </para>
- </listitem>
- <listitem>
- <para>
- Examples: 200k or 200 KBytes; 4m or 4 MBytes; 1.4G or 1.4 GBytes; 10T or 10 TBytes
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Time formats:</term>
- <listitem>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">ms</emphasis> for milliseconds.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">s</emphasis> for seconds.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">m</emphasis> for minutes.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">h</emphasis> for hours.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">d</emphasis> for days.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">w</emphasis> for weeks.
- </para>
- </listitem>
- <listitem>
- <para>
- The default time format is seconds if no other format is specified.
- </para>
- </listitem>
- <listitem>
- <para>
- Examples: 500ms or 500 milliseconds; 20, 20s or 20 seconds; 30m or 30 minutes; 12h or 12 hours; 5d or 5 days; 4w or 4 weeks.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <section id="sect-Reference_Guide-eXo_JCR_configuration-Portal_and_Standalone_configuration">
- <title>Portal and Standalone configuration</title>
-<!-- DOC TODO Do we need to discuss JCR in Satandalone mode, is this relevant?-->
- <para>
- Like other eXo services, eXo JCR can be configured and used in portal (or embedded) mode (as a service embedded in EPP5) and in standalone mode.
- </para>
- <para>
- In embedded mode, JCR services are registered in the portal container. In standalone mode JCR uses a standalone container.
- </para>
- <para>
- The main difference between these container types is that the first is intended to be used in a portal (Web) environment while the second can be used as a standalone. <!--(DOC TODO see the comprehensive page Service Configuration for Beginners for more details) -->
- </para>
- <para>
- The following setup procedure is used to obtain a standalone configuration: <!--(DOC TODO find more in Container configuration)-->
- </para>
-<!-- DOC TODO: The following list of points are unclear. Are the edited versions correct? -->
-
- <itemizedlist>
- <listitem>
- <!--Original <para>
- Configuration that is set explicitly using StandaloneContainer.addConfigurationURL(String url) or StandaloneContainer.addConfigurationPath(String path) before getInstance()
- </para> -->
- <!-- Revised --><para>
- Configuration must be explicitly set using <literal>StandaloneContainer.addConfigurationURL(String url)</literal> or <literal>StandaloneContainer.addConfigurationPath(String path)</literal>before <literal>getInstance()</literal> makes a call.
- </para>
- </listitem>
- <listitem>
- <!-- Original <para>
- Configuration from $base:directory/exo-configuration.xml or $base:directory/conf/exo-configuration.xml file. Where $base:directory is either AS's home directory in case of J2EE AS environment or just the current directory in case of a standalone application.
- </para> -->
- <!-- Revised --><para>
- Configuration settings are read from <filename><replaceable>$base:directory</replaceable>/exo-configuration.xml</filename> or <filename><replaceable>$base:directory</replaceable>/conf/exo-configuration.xml</filename>.
- </para>
- <para>
- Replace <filename><replaceable>$base:directory</replaceable></filename> in the above locations with, either the application server's home directory (in J2EE environments) or the current directory for standalone applications.
- </para>
- </listitem>
- <listitem>
- <!-- Original <para>
- /conf/exo-configuration.xml in the current classloader (e.g. war, ear archive)
- </para> -->
- <!-- Revised --><para>
- The current classloader <code>war</code> or <code>ear</code> archive must contain a <filename>/conf/exo-configuration.xml</filename> file.
- </para>
- </listitem>
- <listitem>
- <!-- Original <para>
- Configuration from $service_jar_file/conf/portal/configuration.xml. WARNING: do not rely on some concrete jar's configuration if you have more than one jar containing conf/portal/configuration.xml file. In this case choosing a configuration is unpredictable.
- </para> -->
- <!-- Revised --><para>
- Further configuration settings are read from <filename><replaceable>$service_jar_file</replaceable>/conf/portal/configuration.xml</filename>
- </para>
- <important>
- <para>
- Do not rely on the settings contained in any particular configuration file if you have more than one <code>jar</code> archive that contains a <filename>conf/portal/configuration.xml</filename> file. Behavior in this scenario can be erratic as the JCR's choice of configuration file is unpredictable.
- </para>
- </important>
- </listitem>
- </itemizedlist>
- <para>
- The JCR service configuration is formatted as follows:
- </para>
- <programlistingco>
- <areaspec>
- <area coords="10 40" id="area-Reference_Guide-eXo_JCR_configuration-Portal_and_Standalone_configuration-JCR_Service_Configuration-conf-path" />
- <area coords="15 40" id="area-Reference_Guide-eXo_JCR_configuration-Portal_and_Standalone_configuration-JCR_Service_Configuration-working-conf" />
- </areaspec>
-<!-- DOC TODO: There is no exo-configuration.xml file in the jar or in the svn trunk/. Does this file exist? -->
-
-<programlisting language="XML" role="XML"><xi:include parse="text" href="../../../extras/Advanced_Development_JCR_Configuration/default23.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
-<!--<programlisting language="XML" role="XML"><![CDATA[<component>
- <key>org.exoplatform.services.jcr.RepositoryService</key>
- <type>org.exoplatform.services.jcr.impl.RepositoryServiceImpl</type>
- </component>
- <component>
- <key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
- <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
- <init-params>
- <value-param>
- <name>conf-path</name>
- <description>JCR repositories configuration file</description>
- <value>jar:/conf/standalone/exo-jcr-config.xml</value>
- </value-param>
- <properties-param>
- <name>working-conf</name>
- <description>working-conf</description>
- <property name="source-name" value="jdbcjcr" />
- <property name="dialect" value="hsqldb" />
- <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister" />
- </properties-param>
- </init-params>
- </component>]]></programlisting>-->
- <calloutlist>
- <callout arearefs="area-Reference_Guide-eXo_JCR_configuration-Portal_and_Standalone_configuration-JCR_Service_Configuration-conf-path">
- <para>
- <literal><conf-path></literal> is a path to a <literal>RepositoryService</literal> JCR Configuration. The .xml file in the example is not in the released jar file.
- Added last sentence as per advice from Villiam Rockai that file does not exist in jar file
- </para>
- </callout>
- <callout arearefs="area-Reference_Guide-eXo_JCR_configuration-Portal_and_Standalone_configuration-JCR_Service_Configuration-working-conf">
- <para>
- <literal><working-conf></literal> is an optional JCR configuration persister configuration. The persister will be disabled if there is no <literal><working-conf></literal> defined.
- </para>
- </callout>
- </calloutlist>
- </programlistingco>
- </section>
-
+ </varlistentry>
+ </variablelist>
+ </step>
+ </procedure>
<section id="sect-Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration">
<title>Repository Service Configuration</title>
- <para>
- The default configuration of the Repository Service is defined in <filename><replaceable>jar:</replaceable>/conf/portal/exo-jcr-config.xml</filename>. It is available in both portal and standalone modes.
- </para>
-<!-- DOC TODO: There is no exo-configuration.xml file in the jar or in the svn trunk/. Does this file exist? -->
- <para>
- In portal mode it is overriden and located in the portal web application <filename>portal/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
- </para>
- <para>
- An example of the Repository Service configuration for standalone mode is included below:
- </para>
-<!-- DOC TODO: convert the varlists below this code sample to callouts, and ensure tags and attributes are marked up appropriately-->
+ <programlistingco>
+ <areaspec>
+ <!--1-->
+ <area coords="1 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-default-repository"/>
+ <!--2-->
+ <area coords="2 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-repositories"/>
+ <!--3-->
+ <area coords="3 80" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-name"/>
+ <!--4-->
+ <area coords="3 85" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-system-workspace"/>
+ <!--5-->
+ <area coords="3 90" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-default-workspace"/>
+ <!--6-->
+ <area coords="4 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-security-domain"/>
+ <!--7-->
+ <area coords="5 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-access-control"/>
+ <!--8-->
+ <area coords="6 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-session-max-age"/>
+ <!--9-->
+ <area coords="7 100" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-authentication-policy"/>
+ <!--10-->
+ <area coords="8 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-workspaces"/>
+ <!--11-->
+ <area coords="9 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-workspace-name"/>
+ <!--12-->
+ <area coords="11 90" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-container"/>
+ <!--13-->
+ <area coords="30 90" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_initializer"/>
+ <!--14-->
+ <area coords="35 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_cache"/>
+ <!--15-->
+ <area coords="41 100" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_query-handler"/>
+ <!--16-->
+ <area coords="47 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_lock-manager-timeout"/>
+ <!--17-->
+ <area coords="48 100" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_lock-manager-persister"/>
+ <!--18-->
+ <area coords="50 90" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_lock-manager-path"/>
+ <!--19-->
+ <area coords="57 110" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-class"/>
+ <!--20-->
+ <area coords="58 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-properties"/>
+ <!--21-->
+ <area coords="65 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-value-storages"/>
+ <!--22-->
+ <area coords="66 90" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-value-storage"/>
+ <!--23-->
+ <area coords="66 95" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-value-class"/>
+ <!--24-->
+ <area coords="67 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-value-properties"/>
+ <!--25-->
+ <area coords="70 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-value-filters"/>
+ <!--26-->
+ <area coords="76 90" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_initializer_implementation_class"/>
+ <!--27-->
+ <area coords="77 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_initializer_implementation_properties"/>
+ <!--28-->
+ <area coords="81 90" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_cache_enabled"/>
+ <!--29-->
+ <area coords="81 95" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_cache_class"/>
+ <!--30-->
+ <area coords="82 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_cache_properties"/>
+ <!--31-->
+ <area coords="87 100" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_query-handler-class"/>
+ <!--32-->
+ <area coords="88 60" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_query-handler-properties"/>
+ </areaspec>
-<!-- <programlistingco>
-
- <areaspec units="linecolumn">
- <areaset id="repository-service" coords="">
- <area coords="1 10" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-default-repository"/>
- <area coords="2" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-repositories"/>
- <area coords="3" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-name"/>
- <area coords="4" id="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-default-workspace"/>
- </areaset>
- </areaspec> -->
-
<programlisting language="XML" role="XML"><xi:include parse="text" href="../../../extras/Advanced_Development_JCR_Configuration/default24.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
-<!--<programlisting language="XML" role="XML"><![CDATA[<repository-service default-repository="repository">
- <repositories>
- <repository name="db1" system-workspace="ws" default-workspace="ws">
- <security-domain>exo-domain</security-domain>
- <access-control>optional</access-control>
- <session-max-age>1h</session-max-age>
- <authentication-policy>org.exoplatform.services.jcr.impl.core.access.JAASAuthenticator</authentication-policy>
- <workspaces>
- <workspace name="production">
- <!- for system storage ->
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
- <properties>
- <property name="source-name" value="jdbcjcr" />
- <property name="multi-db" value="false" />
- <property name="update-storage" value="false" />
- <property name="max-buffer-size" value="200k" />
- <property name="swap-directory" value="../temp/swap/production" />
- </properties>
- <value-storages>
- <value-storage id="system" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
- <properties>
- <property name="path" value="../temp/values/production" />
- </properties>
- <filters>
- <filter property-type="Binary" />
- </filters>
- </value-storage>
- </value-storages>
- </container>
- <initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
- <properties>
- <property name="root-nodetype" value="nt:unstructured" />
- </properties>
- </initializer>
- <cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl">
- <properties>
- <property name="max-size" value="10k" />
- <property name="live-time" value="1h" />
- </properties>
- </cache>
- <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
- <properties>
- <property name="index-dir" value="../temp/jcrlucenedb/production" />
- </properties>
- </query-handler>
- <lock-manager>
- <time-out>15m</time-out>
- <persister class="org.exoplatform.services.jcr.impl.core.lock.FileSystemLockPersister">
- <properties>
- <property name="path" value="../temp/lock/system" />
- </properties>
- </persister>
- </lock-manager>
- </workspace>
- <workspace name="backup">
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
- <properties>
- <property name="source-name" value="jdbcjcr" />
- <property name="multi-db" value="false" />
- <property name="update-storage" value="false" />
- <property name="max-buffer-size" value="200k" />
- <property name="swap-directory" value="../temp/swap/backup" />
- </properties>
- <value-storages>
- <value-storage id="draft" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
- <properties>
- <property name="path" value="../temp/values/backup" />
- </properties>
- <filters>
- <filter property-type="Binary" />
- </filters>
- </value-storage>
- </value-storages>
- </container>
- <initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
- <properties>
- <property name="root-nodetype" value="nt:unstructured" />
- </properties>
- </initializer>
- <cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl">
- <properties>
- <property name="max-size" value="10k" />
- <property name="live-time" value="1h" />
- </properties>
- </cache>
- <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
- <properties>
- <property name="index-dir" value="../temp/jcrlucenedb/backup" />
- </properties>
- </query-handler>
- </workspace>
- </workspaces>
- </repository>
- </repositories>
-</repository-service>]]></programlisting>-->
-
-<!-- <calloutlist>
+ <calloutlist>
+ <title>Repository Service configuration:</title>
<callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-default-repository">
<para>
The name of a default repository (one returned by RepositoryService.getRepository())
@@ -345,9 +241,12 @@
</callout>
<callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-repositories">
<para>
- The list of repositories is configured within the <repositories> wrapper.
+ The list of repositories is configured within the <repositories> element.
</para>
</callout>
+ </calloutlist>
+ <calloutlist>
+ <title>Repository configuration:</title>
<callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-name">
<para>
The name of the repository being configured.
@@ -358,10 +257,260 @@
The name of a workspace. This can be obtained using Session's <literal>login()</literal> or <literal>login(Credentials)</literal> methods for workspaces without an explicit name.
</para>
</callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-system-workspace">
+ <para>
+ The name of workspace where /jcr:system node is placed.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-security-domain">
+ <para>
+ The name of a security domain for JAAS authentication
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-access-control">
+ <para>
+ The name of an access control policy. There can be three types:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>optional</term>
+ <listitem>
+ <para>
+ AN ACL is created on demand. This is the default policy.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>disable</term>
+ <listitem>
+ <para>
+ Disables access control.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>mandatory</term>
+ <listitem>
+ <para>
+ An ACL is created for each added node. This function is not supported in this release.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-session-max-age">
+ <para>
+ The amount of time before an idle session will be removed (called logout). If it is not set, the idle session will never be removed.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-authentication-policy">
+ <para>
+ The name of an authentication policy class.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-workspaces">
+ <para>
+ The list of workspaces.
+ </para>
+ </callout>
+ </calloutlist>
+ <calloutlist>
+ <title>Workspace configuration:</title>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-workspace-name">
+ <para>
+ The name of the workspace.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_configuration-container">
+ <para>
+ Workspace data container (physical storage) configuration.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_initializer">
+ <para>
+ Workspace initializer configuration.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_cache">
+ <para>
+ Workspace storage cache configuration.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_query-handler">
+ <para>
+ Query handler configuration.
+ </para>
+ </callout>
+ </calloutlist>
+ <calloutlist>
+ <title>Lock Manager configuration:</title>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_lock-manager-timeout">
+ <para>
+ The amount of time before the unused global lock is removed.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_lock-manager-persister">
+ <para>
+ A class for storing lock information for future use. For example; remove lock after restarting JCR.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_lock-manager-path">
+ <para>
+ Each workspace has its own lock folder.
+ </para>
+ </callout>
+ </calloutlist>
+ <calloutlist>
+ <title>Workspace data container configuration:</title>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-class">
+ <para>
+ A workspace data container class name.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-properties">
+ <para>
+ The list of properties (in name-value pairs) for the concrete Workspace data container.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-value-storages">
+ <para>
+ The list of value storage plugins.
+ </para>
+ </callout>
+ </calloutlist>
+ <calloutlist>
+ <title>Value storage plugin configuration (optional feature):</title>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-value-storage">
+ <para>
+ <emphasis role="bold">Optional</emphasis>: Value storage plugin definition. If this element is not included, the values will be stored as BLOBs inside the database.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-value-class">
+ <para>
+ A value storage plugin class name (attribute).
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-value-properties">
+ <para>
+ The list of properties (in name-value pairs) for a concrete value storage plugin.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_workspace-container-value-filters">
+ <para>
+ The list of filters defining conditions when this plugin is applicable.
+ </para>
+ </callout>
+ </calloutlist>
+ <calloutlist>
+ <title>Initializer configuration (optional):</title>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_initializer_implementation_class">
+ <para>
+ Initializer implementation class.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_initializer_implementation_properties">
+ <para>
+ The list of properties (in name-value pairs). Properties are supported:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>root-nodetype</term>
+ <listitem>
+ <para>
+ The node type for root node initialization.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>root-permissions</term>
+ <listitem>
+ <para>
+ Default permissions of the root node. It is defined as a set of semicolon-delimited permissions containing a group of space-delimited identities and the type of permission.
+ </para>
+ <para>
+ For example any read;:/admin read;:/admin add_node;:/admin set_property;:/admin remove means that users from group admin have all permissions and other users have only a 'read' permission.
+ </para>
+ <para>
+ Configurable initializer adds a capability to override workspace initial startup procedure.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </callout>
+ </calloutlist>
+ <calloutlist>
+ <title>Cache configuration:</title>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_cache_enabled">
+ <para>
+ Defines if the workspace cache is enabled.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_cache_class">
+ <para>
+ Cache implementation class. This is optional from JCR version 1.9.
+ </para>
+ <para>
+ The default value is <literal>org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl</literal>.
+ </para>
+ <para>
+ The cache can be configured to use concrete implementations of the <literal>WorkspaceStorageCache</literal> interface.
+ </para>
+ <para>
+ The JCR core has two implementations to use:
+ </para>
+ <para>
+ <emphasis role="bold">LinkedWorkspaceStorageCacheImpl</emphasis>
+ </para>
+ <para>
+ The default implementation, with configurable read behavior and statistics.
+ </para>
+ <para>
+ <emphasis role="bold">WorkspaceStorageCacheImpl</emphasis>
+ </para>
+ <para>
+ This implementation is a legacy from pre 1.9 versions of the JCR. However, it can still be used.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_cache_properties">
+ <para>
+ The list of properties (in name-value pairs) for the workspace cache:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>max-size</term>
+ <listitem>
+ <para>
+ The maximum size of the cache.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>live-time</term>
+ <listitem>
+ <para>
+ Cached item live time.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </callout>
+ </calloutlist>
+ <calloutlist>
+ <title>Query Handler configuration:</title>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_query-handler-class">
+ <para>
+ A Query Handler class name.
+ </para>
+ </callout>
+ <callout arearefs="Reference_Guide-Portal_and_Standalone_configuration-Repository_service_query-handler-properties">
+ <para>
+ The list of properties (name-value pairs) for a Query Handler (<literal>indexDir</literal>) properties and advanced features described in <xref linkend="sect-Reference_Guide-Search_Configuration"/>.
+ </para>
+ </callout>
</calloutlist>
- </programlistingco> -->
+ </programlistingco>
- <variablelist>
+<!-- <variablelist>
<title>Repository Service configuration:</title>
<varlistentry>
<term>default-repository</term>
@@ -478,10 +627,10 @@
</listitem>
</varlistentry>
<varlistentry>
- <term>auto-init-root-nodetype</term>
+ <term>container</term>
<listitem>
<para>
- The node type for root node initialization. This is deprecated in JCR 1.9. The initializer is to be used instead.
+ Workspace data container (physical storage) configuration.
</para>
</listitem>
</varlistentry>
@@ -689,9 +838,9 @@
</listitem>
</varlistentry>
</variablelist>
-<!-- TODO <para>
+ TODO <para>
TODO LinkedWorkspaceStorageCacheImpl supports additional optional parameters
- </para> -->
+ </para>
</listitem>
</varlistentry>
</variablelist>
@@ -742,57 +891,10 @@
</para>
</listitem>
</varlistentry>
- </variablelist>
- <formalpara>
- <title>Configuration definition:</title>
- <para></para>
- </formalpara>
+ </variablelist> -->
+ </section>
-<programlisting language="Java" role="Java"><xi:include parse="text" href="../../../extras/Advanced_Development_JCR_Configuration/NMTOKEN.java" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
-<!--<programlisting><!ELEMENT repository-service (repositories)>
- <!ATTLIST repository-service default-repository NMTOKEN #REQUIRED>
- <!ELEMENT repositories (repository)>
- <!ELEMENT repository (security-domain,access-control,session-max-age,authentication-policy,workspaces)>
- <!ATTLIST repository
- default-workspace NMTOKEN #REQUIRED
- name NMTOKEN #REQUIRED
- system-workspace NMTOKEN #REQUIRED
- >
- <!ELEMENT security-domain (#PCDATA)>
- <!ELEMENT access-control (#PCDATA)>
- <!ELEMENT session-max-age (#PCDATA)>
- <!ELEMENT authentication-policy (#PCDATA)>
- <!ELEMENT workspaces (workspace+)>
- <!ELEMENT workspace (container,initializer,cache,query-handler)>
- <!ATTLIST workspace name NMTOKEN #REQUIRED>
- <!ELEMENT container (properties,value-storages)>
- <!ATTLIST container class NMTOKEN #REQUIRED>
- <!ELEMENT value-storages (value-storage+)>
- <!ELEMENT value-storage (properties,filters)>
- <!ATTLIST value-storage class NMTOKEN #REQUIRED>
- <!ELEMENT filters (filter+)>
- <!ELEMENT filter EMPTY>
- <!ATTLIST filter property-type NMTOKEN #REQUIRED>
- <!ELEMENT initializer (properties)>
- <!ATTLIST initializer class NMTOKEN #REQUIRED>
- <!ELEMENT cache (properties)>
- <!ATTLIST cache
- enabled NMTOKEN #REQUIRED
- class NMTOKEN #REQUIRED
- >
- <!ELEMENT query-handler (properties)>
- <!ATTLIST query-handler class NMTOKEN #REQUIRED>
- <!ELEMENT access-manager (properties)>
- <!ATTLIST access-manager class NMTOKEN #REQUIRED>
- <!ELEMENT lock-manager (time-out,persister)>
- <!ELEMENT time-out (#PCDATA)>
- <!ELEMENT persister (properties)>
- <!ELEMENT properties (property+)>
- <!ELEMENT property EMPTY>
-</programlisting>-->
- </section>
- <section id="sect-Reference_Guide-eXo_JCR_configuration-Related_documents">
+ <section id="sect-Reference_Guide-JCR_configuration-Related_documents">
<title>Related Sections</title>
<itemizedlist>
<listitem>
Modified: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/intro.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/intro.xml 2010-08-27 02:41:47 UTC (rev 3945)
+++ epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/intro.xml 2010-08-27 03:46:39 UTC (rev 3946)
@@ -6,74 +6,118 @@
<section id="sect-Reference_Guide-Introduction">
<title>Introduction</title>
<para>
- The Java Content Repository (JCR) API was created within the Java Community Process (<ulink type="http" url="http://jcp.org/">http://jcp.org/</ulink>) as a collaboration between an expert group and the Java community.
+ The term <emphasis role="bold">JCR</emphasis> refers to the Java Content Repository. The JCR is the data store of JBoss Enterprise Portal Platform. All content is stored and managed via the JCR.
</para>
<para>
- Within the Java Community Process (JCP), JCR is known as Java Specification Request-170 (JSR-170) <ulink type="http" url="http://www.jcp.org/en/jsr/detail?id=170">http://www.jcp.org/en/jsr/detail?id=170</ulink>.
+ The eXo JCR included with JBoss Enterprise Portal Platform 5.1 is a (<ulink type="http" url="http://www.jcp.org/en/jsr/detail?id=170">JSR-170</ulink>) compliant implementation of the JCR 1.0 specification. The JCR provides versioning, textual search, access control, content event monitoring, and can be used for storing text and binary data. The backend storage of the JCR is configurable and can be a filesystem or a database.
</para>
-
<section id="sect-Reference_Guide-JCR_JSR_170_API_main_concepts-The_Data_model">
- <title>The data model</title>
- <para>
- The main purpose of a content repository (CR) is to maintain data. Therefore the core of any CR is the data model.
- </para>
- <para>
- Some points about the eXo JCR are:
- </para>
- <itemizedlist>
+ <title>Concepts</title>
+ <variablelist>
+ <varlistentry>
+ <term>The Data Model</term>
<listitem>
<para>
- The main data storage abstraction of JCR's data model is a workspace.
+ The core of any Content Repository is the data model. The data model defines the 'data elements' (fields, columns, attributes, etc.) that are stored in the CR and the relationships between these elements.
</para>
- </listitem>
- <listitem>
<para>
- Each repository should have one or more workspaces.
+ Data elements can be singular pieces of information (the value 3.14, for example), or compound values ('<emphasis>pi</emphasis>' = 3.14). A data model uses concepts like 'nodes', 'arrays' and 'links' to define relationships between data elements.
</para>
- </listitem>
- <listitem>
<para>
- The content is stored in a workspace as a hierarchy of items.
+ The use and structure of these elements forms the content repository's 'data model'.
</para>
</listitem>
- <listitem>
- <para>
- Each workspace has its own hierarchy of items.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Repository</term>
+ <listitem>
+ <para>
+ A repository is a form of data storage device. A 'repository' differs from a 'database' in the nature of the information contained. While a database holds hard data in rigid tables, a repository may access the data on a database by using less rigid <emphasis>meta</emphasis>-data. In this sense a repository operates as an 'interpreter' between the database(s) and the user.
+ </para>
+ <para>
+ The eXo JCR can access multiple repositories.
+ </para>
+ <note>
+ <para>
+ The data model for the interface (the repository) is rarely the same as the data model used by the repository's underlying storage subsystems (such as a database), however the repository is able to make persistent data changes in the storage subsystem.
+ </para>
+ </note>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Data Abstraction</term>
+ <listitem>
+ <para>
+ Data abstraction describes the separation between <emphasis>abstract</emphasis> and <emphasis>concrete</emphasis> properties of data stored in a repository. The <emphasis>concrete</emphasis> properties of the data refer to its implementation details.
+ </para>
+ <para>
+ The <emphasis>concrete</emphasis> properties of the data implementation may be changed without affecting the <emphasis>abstract</emphasis> properties of the data itself, which are read by the data client.
+ </para>
+ <para>
+ Consider the presentation of data in a list, graph or table. While the information <emphasis>implementation</emphasis> may change, the data itself is unaffected, and readers to whom the data is presented can perform a mental abstraction to interpret it correctly, regardless of the implementation.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Workspace</term>
+ <listitem>
+ <para>
+ The eXo JCR uses 'workspaces' as the main data abstraction in its data model. The content is stored in a workspace as a hierarchy of <emphasis>items</emphasis> and each workspace has its own hierarchy of items.
+ </para>
+ <para>
+ Repositories access one or more workspaces. Persistent JCR workspaces consist of a directed acyclic graph of <emphasis>items</emphasis> where the edges represent the parent-child relation.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Items</term>
+ <listitem>
+ <para>
+ An <emphasis>item</emphasis> is either a <emphasis>node</emphasis> or a <emphasis>property</emphasis>. Properties contain the data (either simple values or binary data). The nodes of a workspace give it its structure while the properties hold the data itself.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Nodes</term>
+ <listitem>
+ <para>
+ Nodes are identified using accepted <emphasis>namespacing</emphasis> conventions. Changed nodes may be versioned through an associated version graph to preserve data integrity.
+ </para>
+ <para>
+ Nodes can have various properties or child nodes associated to them.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Properties</term>
+ <listitem>
+ <para>
+ Properties hold data as values of predefined types, such as; <emphasis role="bold">String</emphasis>, <emphasis role="bold">Binary</emphasis>, <emphasis role="bold">Long</emphasis>, <emphasis role="bold">Boolean</emphasis>, <emphasis role="bold">Double</emphasis>, <emphasis role="bold">Date</emphasis>, <emphasis role="bold">Reference</emphasis> and <emphasis role="bold">Path</emphasis>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</listitem>
- </itemizedlist>
- <!--
- <figure>
- <title>Item hierarchy</title>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/item-hierarchy.gif" />
- </imageobject>
- </mediaobject>
- </figure>
- -->
- <para>
- A <emphasis role="bold">node</emphasis> is intended to support the data hierarchy. They are typed using namespaced names which allows the content to be structured according to standardized constraints.
- </para>
- <para>
- A node may be versioned through an associated version graph, however this is an optional feature.
- </para>
- <para>
- <emphasis>Property stored data</emphasis> are values of predefined types such as; <emphasis role="bold">String</emphasis>, <emphasis role="bold">Binary</emphasis>, <emphasis role="bold">Long</emphasis>, <emphasis role="bold">Boolean</emphasis>, <emphasis role="bold">Double</emphasis>, <emphasis role="bold">Date</emphasis>, <emphasis role="bold">Reference</emphasis> and <emphasis role="bold">Path</emphasis>.
- </para>
- <note>
+ </varlistentry>
+ </variablelist>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata fileref="images/Advanced/JCR/repository_diagram.png" format="PNG" align="center" scale="90" />
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata fileref="images/Advanced/JCR/repository_diagram.png" format="PNG" align="center" contentwidth="150mm" />
+ </imageobject>
+ </mediaobject>
<para>
- The data model for the interface (the repository model) is rarely the same as the data models used by the repository's underlying storage subsystems.
+ The above diagram depicts a repository R with workspaces W0, W1 and W2. The item graph of W1 contains a root node with child nodes A, B and C. A has a property D of type STRING and a child node E, which in turn has a property I of type BINARY. B has the properties F (a LONG) and G (a BOOLEAN). C has a property H of type DOUBLE.
</para>
+ <formalpara>
+ <title>DOC TODO: Placeholders</title>
+ <para>
+ The above diagram is being redrawn for RedHat. The explanatory note needs to be rewritten to avoid copyright infringment.
+ </para>
+ </formalpara>
<para>
- The repository knows how to make the client's changes persistent because that is part of the repository configuration, rather than part of the application programming task.
+ Further information on JCR concepts can be found at <ulink type="http" url="http://www.day.com/specs/jcr/2.0/3_Repository_Model.html"></ulink>.
</para>
- </note>
</section>
-
-
-
-</section>
-
-
+</section>
\ No newline at end of file
Modified: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/jdbc-data-container-config.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/jdbc-data-container-config.xml 2010-08-27 02:41:47 UTC (rev 3945)
+++ epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/Advanced/JCR/jdbc-data-container-config.xml 2010-08-27 03:46:39 UTC (rev 3946)
@@ -5,6 +5,67 @@
]>
<section id="sect-Reference_Guide-JDBC_Data_Container_Config">
<title>JDBC Data Container Config</title>
+ <section>
+ <title>Concepts</title>
+ <note>
+ <title>DOC TODO</title>
+ <para>
+ Complete the following concepts.
+ </para>
+ </note>
+ <variablelist>
+ <varlistentry>
+ <term>JDBC</term>
+ <listitem>
+ <para>
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Workspace</term>
+ <listitem>
+ <para>
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JCR Service Mode</term>
+ <listitem>
+ <para>
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RDBMS</term>
+ <listitem>
+ <para>
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ANSI</term>
+ <listitem>
+ <para>
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>database dialect</term>
+ <listitem>
+ <para>
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </section>
<section id="sect-Reference_Guide-JDBC_Data_Container_Config-Introduction">
<title>Introduction</title>
<para>
@@ -231,7 +292,7 @@
In &PRODUCT; the JCR is configured in portal web application <filename>portal/WEB-INF/conf/jcr/jcr-configuration.xml</filename> (containing JCR Repository Service and related services) and <filename>repository-configuration.xml</filename> (which contains the repositories configuration).
</para>
<para>
- Refer to <xref linkend="sect-Reference_Guide-eXo_JCR_configuration"/> for more information.
+ Refer to <xref linkend="sect-Reference_Guide-JCR_configuration"/> for more information.
</para>
</section>
@@ -587,7 +648,7 @@
</para>
<note>
<para>
- JCR version 1.9 supports human-readable parameter formats. See <xref linkend="sect-Reference_Guide-eXo_JCR_configuration"/> for more information).
+ JCR version 1.9 supports human-readable parameter formats. See <xref linkend="sect-Reference_Guide-JCR_configuration"/> for more information).
</para>
</note>
</section>
Modified: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml 2010-08-27 02:41:47 UTC (rev 3945)
+++ epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml 2010-08-27 03:46:39 UTC (rev 3946)
@@ -161,7 +161,7 @@
<para>
This file describes the layout and portlets that will be shown on all pages. Usually the layout contains the banner, footer, menu and breadcrumbs portlets. &PRODUCT; is extremely configurable as every view element (even the banner and footer) is a portlet.
</para>
- <programlisting role="XML" language="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/portal.xml" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting role="XML" language="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/portal.xml" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
<para>
It is also possible to apply a nested container that can also contain portlets. Row, column or tab containers are then responsible for the layout of their child portlets.
</para>
@@ -185,7 +185,7 @@
<para>
When the <literal>#{...}</literal> syntax is used, the enclosed property name serves as a key that is automatically passed to internationalization mechanism so the literal property name is replaced by a localized value taken from the associated properties file matching the current locale.
</para>
- <programlisting role="XML" language="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/navigation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+<programlisting role="XML" language="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/navigation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
<para>
This navigation tree can have multiple views inside portlets (such as the breadcrumbs portlet) that render the current view node, the site map or the menu portlets.
</para>
@@ -200,12 +200,33 @@
</listitem>
</varlistentry>
<varlistentry>
+ <term>Subpages</term>
+ <listitem>
+ <para>
+ Subpages can also be created using the following XML structure
+ </para>
+ <programlistingco>
+ <areaspec>
+ <area coords="9 40" id="area-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation-subpage" />
+ </areaspec>
+<programlisting role="XML" language="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/subpage.xml" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation-subpage">
+ <para>
+ This element defines the parent/child relationship btween a page and a subpage.
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term>pages.xml</term>
<listitem>
<para>
This configuration file structure is very similar to <filename>portal.xml</filename> and it can also contain container tags. Each application can decide whether to render the portlet border, the window state, the icons or portlet's mode.
</para>
- <programlisting role="XML" language="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/pages.xml" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+<programlisting role="XML" language="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/pages.xml" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
</listitem>
</varlistentry>
</variablelist>
Modified: epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/WSRP.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/WSRP.xml 2010-08-27 02:41:47 UTC (rev 3945)
+++ epp/docs/branches/EPP_5_0_Branch/Reference_Guide/en-US/modules/WSRP.xml 2010-08-27 03:46:39 UTC (rev 3946)
@@ -59,11 +59,6 @@
<para>
While &PRODUCT; provides a complete implementation of WSRP 1.0, more interoperability testing (based on the <ulink url="http://www.oasis-open.org/committees/download.php/6018">Conformance statements</ulink>) is planned for future releases.
</para>
- <note>
- <para>
- As of version &PRODUCT_VERSION; of &PRODUCT_NAME;, WSRP is only activated and supported when &PRODUCT_NAME; is deployed on JBoss Application Server (AS).
- </para>
- </note>
</section>
<section id="sect-Reference_Guide-Web_Services_for_Remote_Portlets_WSRP-Deploying_PRODUCT_NAMEs_WSRP_services">
14 years, 4 months
gatein SVN: r3945 - in portal/branches/branched-r3845/webui: portlet/src/main/java/org/exoplatform/webui/core and 1 other directory.
by do-not-reply@jboss.org
Author: phuong_vu
Date: 2010-08-26 22:41:47 -0400 (Thu, 26 Aug 2010)
New Revision: 3945
Modified:
portal/branches/branched-r3845/webui/framework/src/main/java/org/exoplatform/webui/core/UIApplication.java
portal/branches/branched-r3845/webui/portlet/src/main/java/org/exoplatform/webui/core/UIPortletApplication.java
Log:
GTNPORTAL-1205 Show message wrong when change invalid Number of columns of Dashboard page when click switch view mode
Modified: portal/branches/branched-r3845/webui/framework/src/main/java/org/exoplatform/webui/core/UIApplication.java
===================================================================
--- portal/branches/branched-r3845/webui/framework/src/main/java/org/exoplatform/webui/core/UIApplication.java 2010-08-26 22:47:01 UTC (rev 3944)
+++ portal/branches/branched-r3845/webui/framework/src/main/java/org/exoplatform/webui/core/UIApplication.java 2010-08-27 02:41:47 UTC (rev 3945)
@@ -61,6 +61,11 @@
owner = s;
}
+ /**
+ * Return the common UIPopupMessages
+ * UIPortletApplication will override this method an return difference UIPopupMessage for difference Portlet modes
+ * @return UIPopupMessages
+ */
public UIPopupMessages getUIPopupMessages()
{
return uiPopupMessages_;
@@ -68,12 +73,12 @@
public void addMessage(ApplicationMessage message)
{
- uiPopupMessages_.addMessage(message);
+ getUIPopupMessages().addMessage(message);
}
public void clearMessages()
{
- uiPopupMessages_.clearMessages();
+ getUIPopupMessages().clearMessages();
}
public long getLastAccessApplication()
@@ -94,18 +99,18 @@
@SuppressWarnings("unchecked")
public <T extends UIComponent> T findComponentById(String lookupId)
{
- if (uiPopupMessages_.getId().equals(lookupId))
- return (T)uiPopupMessages_;
+ if (getUIPopupMessages().getId().equals(lookupId))
+ return (T)getUIPopupMessages();
return (T)super.findComponentById(lookupId);
}
public void renderChildren() throws Exception
{
super.renderChildren();
- if (uiPopupMessages_ == null)
+ if (getUIPopupMessages() == null)
return;
WebuiRequestContext context = WebuiRequestContext.getCurrentInstance();
- uiPopupMessages_.processRender(context);
+ getUIPopupMessages().processRender(context);
}
public void processAction(WebuiRequestContext context) throws Exception
@@ -116,14 +121,14 @@
}
catch (MessageException ex)
{
- uiPopupMessages_.addMessage(ex.getDetailMessage());
+ getUIPopupMessages().addMessage(ex.getDetailMessage());
}
catch (Throwable t)
{
Object[] args = {t.getMessage()};
ApplicationMessage msg =
new ApplicationMessage("UIApplication.msg.unknown-error", args, ApplicationMessage.ERROR);
- uiPopupMessages_.addMessage(msg);
+ getUIPopupMessages().addMessage(msg);
log.error("Error during the processAction phase", t);
}
}
Modified: portal/branches/branched-r3845/webui/portlet/src/main/java/org/exoplatform/webui/core/UIPortletApplication.java
===================================================================
--- portal/branches/branched-r3845/webui/portlet/src/main/java/org/exoplatform/webui/core/UIPortletApplication.java 2010-08-26 22:47:01 UTC (rev 3944)
+++ portal/branches/branched-r3845/webui/portlet/src/main/java/org/exoplatform/webui/core/UIPortletApplication.java 2010-08-27 02:41:47 UTC (rev 3945)
@@ -19,22 +19,26 @@
package org.exoplatform.webui.core;
-import org.exoplatform.webui.application.WebuiApplication;
-import org.exoplatform.webui.application.WebuiRequestContext;
-import org.exoplatform.webui.application.portlet.PortletRequestContext;
-import org.exoplatform.commons.serialization.api.annotations.Serialized;
-
import java.io.Writer;
+import java.util.Map;
import java.util.Set;
import javax.portlet.WindowState;
+import org.apache.commons.collections.map.HashedMap;
+import org.exoplatform.commons.serialization.api.annotations.Serialized;
+import org.exoplatform.webui.application.WebuiApplication;
+import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.portlet.PortletRequestContext;
+
@Serialized
abstract public class UIPortletApplication extends UIApplication
{
private int minWidth = 300;
private int minHeight = 300;
+
+ private Map<String, UIPopupMessages> _uiPopupMessages;
static public String VIEW_MODE = "ViewMode";
@@ -46,8 +50,31 @@
public UIPortletApplication() throws Exception
{
+ _uiPopupMessages = new HashedMap();
}
+ @Override
+ public UIPopupMessages getUIPopupMessages()
+ {
+ PortletRequestContext pContext = (PortletRequestContext)WebuiRequestContext.getCurrentInstance();
+ String currMode = pContext.getApplicationMode().toString();
+
+ if (!_uiPopupMessages.containsKey(currMode)) {
+ try
+ {
+ UIPopupMessages popMsg = createUIComponent(UIPopupMessages.class, null, null);
+ popMsg.setId("_" + popMsg.hashCode());
+ _uiPopupMessages.put(currMode, popMsg);
+ }
+ catch (Exception e)
+ {
+ return null;
+ }
+ }
+
+ return _uiPopupMessages.get(currMode);
+ }
+
@Deprecated
public int getMinWidth()
{
14 years, 4 months
gatein SVN: r3944 - components/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet.
by do-not-reply@jboss.org
Author: sohil.shah(a)jboss.com
Date: 2010-08-26 18:47:01 -0400 (Thu, 26 Aug 2010)
New Revision: 3944
Modified:
components/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java
Log:
JBEPP-393: Malformed Security token when adding gadgets
Modified: components/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java
===================================================================
--- components/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java 2010-08-26 16:50:46 UTC (rev 3943)
+++ components/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java 2010-08-26 22:47:01 UTC (rev 3944)
@@ -31,6 +31,7 @@
import java.io.IOException;
import java.io.UnsupportedEncodingException;
+import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
@@ -98,11 +99,23 @@
}
ServletInputStream is = request.getInputStream();
+
byte[] body = IOUtils.toByteArray(is);
- if (body.length != length) {
+ if(body.length == 0)
+ {
+ //Looks like the servlet input stream has already been read in its request lifecycle
+ String bodyStr = request.getParameterMap().toString();
+ int index = bodyStr.lastIndexOf('=');
+ bodyStr = bodyStr.substring(1, index).trim();
+
+ body = bodyStr.getBytes();
+ }
+
+ if (body.length != length)
+ {
logger.info("Wrong size. Length: " + length + " real: " + body.length);
- response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
- return;
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ return;
}
Result result = process(request, response, body);
14 years, 4 months
gatein SVN: r3943 - in portal/branches/branched-r3845/component/portal/src: main/java/org/exoplatform/portal/pom/config and 3 other directories.
by do-not-reply@jboss.org
Author: hoang_to
Date: 2010-08-26 12:50:46 -0400 (Thu, 26 Aug 2010)
New Revision: 3943
Added:
portal/branches/branched-r3845/component/portal/src/test/java/conf/test-mop-nodetypes.xml
portal/branches/branched-r3845/component/portal/src/test/java/org/exoplatform/portal/config/SampleMixin.java
portal/branches/branched-r3845/component/portal/src/test/java/org/exoplatform/portal/config/TestHandleMixin.java
Modified:
portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/config/DataStorage.java
portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/config/DataStorageImpl.java
portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/pom/config/POMDataStorage.java
portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/pom/data/ModelDataStorage.java
portal/branches/branched-r3845/component/portal/src/test/java/conf/exo.portal.component.portal-configuration1.xml
Log:
GTNPORTAL-1419: Public API to access/modify MOP Mixins
Modified: portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/config/DataStorage.java
===================================================================
--- portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/config/DataStorage.java 2010-08-26 11:20:30 UTC (rev 3942)
+++ portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/config/DataStorage.java 2010-08-26 16:50:46 UTC (rev 3943)
@@ -26,6 +26,7 @@
import org.exoplatform.portal.config.model.ApplicationType;
import org.exoplatform.portal.config.model.Container;
import org.exoplatform.portal.config.model.Dashboard;
+import org.exoplatform.portal.config.model.ModelObject;
import org.exoplatform.portal.pom.data.ModelChange;
import org.exoplatform.portal.config.model.Page;
import org.exoplatform.portal.config.model.PageNavigation;
@@ -270,4 +271,13 @@
* @throws Exception any exception
*/
public List<String> getAllPortalNames() throws Exception;
+
+ /*************************************************************
+ Public API to access/modify MOP mixin, temporarily put here
+ **************************************************************/
+
+ public <A> A adapt(ModelObject modelObject, Class<A> type);
+
+ public <A> A adapt(ModelObject modelObject, Class<A> type, boolean create);
+
}
\ No newline at end of file
Modified: portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/config/DataStorageImpl.java
===================================================================
--- portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/config/DataStorageImpl.java 2010-08-26 11:20:30 UTC (rev 3942)
+++ portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/config/DataStorageImpl.java 2010-08-26 16:50:46 UTC (rev 3943)
@@ -18,6 +18,13 @@
*/
package org.exoplatform.portal.config;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedList;
+import java.util.List;
+
import org.exoplatform.commons.utils.LazyPageList;
import org.exoplatform.commons.utils.ListAccess;
import org.exoplatform.portal.application.PortletPreferences;
@@ -41,9 +48,6 @@
import org.exoplatform.portal.pom.data.PortalKey;
import org.exoplatform.services.listener.ListenerService;
-import java.lang.reflect.Array;
-import java.util.*;
-
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
@@ -340,4 +344,16 @@
{
delegate.saveDashboard(dashboard.build());
}
+
+ @Override
+ public <A> A adapt(ModelObject modelObject, Class<A> type)
+ {
+ return delegate.adapt(modelObject.build(), type);
+ }
+
+ @Override
+ public <A> A adapt(ModelObject modelObject, Class<A> type, boolean create)
+ {
+ return delegate.adapt(modelObject.build(), type, create);
+ }
}
Modified: portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/pom/config/POMDataStorage.java
===================================================================
--- portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/pom/config/POMDataStorage.java 2010-08-26 11:20:30 UTC (rev 3942)
+++ portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/pom/config/POMDataStorage.java 2010-08-26 16:50:46 UTC (rev 3943)
@@ -19,6 +19,12 @@
package org.exoplatform.portal.pom.config;
+import java.io.ByteArrayInputStream;
+import java.util.Comparator;
+import java.util.List;
+import java.util.UUID;
+
+import org.chromattic.api.ChromatticSession;
import org.exoplatform.commons.utils.IOUtil;
import org.exoplatform.commons.utils.LazyPageList;
import org.exoplatform.container.configuration.ConfigurationManager;
@@ -41,6 +47,7 @@
import org.exoplatform.portal.pom.config.tasks.SearchTask;
import org.exoplatform.portal.pom.data.DashboardData;
import org.exoplatform.portal.pom.data.ModelChange;
+import org.exoplatform.portal.pom.data.ModelData;
import org.exoplatform.portal.pom.data.ModelDataStorage;
import org.exoplatform.portal.pom.data.NavigationData;
import org.exoplatform.portal.pom.data.NavigationKey;
@@ -50,14 +57,8 @@
import org.exoplatform.portal.pom.data.PortalKey;
import org.jibx.runtime.BindingDirectory;
import org.jibx.runtime.IBindingFactory;
-import org.jibx.runtime.IUnmarshallingContext;
import org.jibx.runtime.impl.UnmarshallingContext;
-import java.io.ByteArrayInputStream;
-import java.util.Comparator;
-import java.util.List;
-import java.util.UUID;
-
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
@@ -313,4 +314,38 @@
}
});
}
+
+ @Override
+ public <A> A adapt(ModelData modelData, Class<A> type)
+ {
+ return adapt(modelData, type, true);
+ }
+
+ @Override
+ public <A> A adapt(ModelData modelData, Class<A> type, boolean create)
+ {
+ try
+ {
+ POMSession pomSession = pomMgr.getSession();
+ ChromatticSession chromSession = pomSession.getSession();
+
+ //TODO: Deal with the case where modelData is not persisted before invocation to adapt
+ // Get the workspace object
+ Object o = pomSession.findObjectById(modelData.getStorageId());
+
+ A a = chromSession.getEmbedded(o, type);
+ if(a == null && create)
+ {
+ a = chromSession.create(type);
+ chromSession.setEmbedded(o, type, a);
+ }
+
+ return a;
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ return null;
+ }
+ }
}
Modified: portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/pom/data/ModelDataStorage.java
===================================================================
--- portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/pom/data/ModelDataStorage.java 2010-08-26 11:20:30 UTC (rev 3942)
+++ portal/branches/branched-r3845/component/portal/src/main/java/org/exoplatform/portal/pom/data/ModelDataStorage.java 2010-08-26 16:50:46 UTC (rev 3943)
@@ -109,4 +109,14 @@
public void saveDashboard(DashboardData dashboard) throws Exception;
public void save() throws Exception;
+
+ /****************************************************************
+ * Proxy methods of public API to access/modify MOP mixins,
+ *
+ * temporarily put here
+ ***************************************************************/
+ public <A> A adapt(ModelData modelData, Class<A> type);
+
+ public <A> A adapt(ModelData modelData, Class<A> type, boolean create);
+
}
\ No newline at end of file
Modified: portal/branches/branched-r3845/component/portal/src/test/java/conf/exo.portal.component.portal-configuration1.xml
===================================================================
--- portal/branches/branched-r3845/component/portal/src/test/java/conf/exo.portal.component.portal-configuration1.xml 2010-08-26 11:20:30 UTC (rev 3942)
+++ portal/branches/branched-r3845/component/portal/src/test/java/conf/exo.portal.component.portal-configuration1.xml 2010-08-26 16:50:46 UTC (rev 3943)
@@ -130,6 +130,7 @@
<value>jar:/conf/gatein-nodetypes.xml</value>
<value>jar:/conf/mop-nodetypes.xml</value>
<value>jar:/conf/content-nodetypes.xml</value>
+ <value>jar:/conf/test-mop-nodetypes.xml</value>
</values-param>
</init-params>
</component-plugin>
@@ -189,6 +190,7 @@
<value>org.exoplatform.portal.mop.ProtectedResource</value>
<value>org.exoplatform.portal.mop.Described</value>
<value>org.exoplatform.portal.mop.Visible</value>
+ <value>org.exoplatform.portal.config.SampleMixin</value>
</values-param>
</init-params>
</component-plugin>
Added: portal/branches/branched-r3845/component/portal/src/test/java/conf/test-mop-nodetypes.xml
===================================================================
--- portal/branches/branched-r3845/component/portal/src/test/java/conf/test-mop-nodetypes.xml (rev 0)
+++ portal/branches/branched-r3845/component/portal/src/test/java/conf/test-mop-nodetypes.xml 2010-08-26 16:50:46 UTC (rev 3943)
@@ -0,0 +1,29 @@
+<!--
+ ~ Copyright (C) 2009 eXo Platform SAS.
+ ~
+ ~ 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.
+ -->
+<nodeTypes xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0">
+
+ <nodeType name="gtn:sampleMixin" isMixin="true" hasOrderableChildNodes="false" primaryItemName="">
+ <propertyDefinitions>
+ <propertyDefinition name="gtn:sampleProperty" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="true">
+ <valueConstraints/>
+ </propertyDefinition>
+ </propertyDefinitions>
+ </nodeType>
+
+</nodeTypes>
Added: portal/branches/branched-r3845/component/portal/src/test/java/org/exoplatform/portal/config/SampleMixin.java
===================================================================
--- portal/branches/branched-r3845/component/portal/src/test/java/org/exoplatform/portal/config/SampleMixin.java (rev 0)
+++ portal/branches/branched-r3845/component/portal/src/test/java/org/exoplatform/portal/config/SampleMixin.java 2010-08-26 16:50:46 UTC (rev 3943)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * 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.exoplatform.portal.config;
+
+import org.chromattic.api.annotations.MixinType;
+import org.chromattic.api.annotations.Property;
+
+/**
+ * @author <a href="mailto:hoang281283@gmail.com">Minh Hoang TO</a>
+ * Aug 26, 2010
+ */
+
+@MixinType(name = "gtn:sampleMixin")
+public abstract class SampleMixin
+{
+
+ @Property(name = "gtn:sampleProperty", defaultValue = {"SampleProperty"})
+ public abstract String getSampleProperty();
+
+ public abstract void setSampleProperty(String sampleProperty);
+}
Added: portal/branches/branched-r3845/component/portal/src/test/java/org/exoplatform/portal/config/TestHandleMixin.java
===================================================================
--- portal/branches/branched-r3845/component/portal/src/test/java/org/exoplatform/portal/config/TestHandleMixin.java (rev 0)
+++ portal/branches/branched-r3845/component/portal/src/test/java/org/exoplatform/portal/config/TestHandleMixin.java 2010-08-26 16:50:46 UTC (rev 3943)
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * 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.exoplatform.portal.config;
+
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.portal.config.model.Page;
+import org.exoplatform.portal.config.model.PortalConfig;
+import org.exoplatform.portal.pom.config.POMSession;
+import org.exoplatform.portal.pom.config.POMSessionManager;
+
+/**
+ * @author <a href="mailto:hoang281283@gmail.com">Minh Hoang TO</a>
+ * Aug 25, 2010
+ */
+
+public class TestHandleMixin extends AbstractPortalTest
+{
+
+ private DataStorage dataStorage;
+
+ private POMSessionManager pomMgr;
+
+ private POMSession session;
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ begin();
+
+ PortalContainer container = PortalContainer.getInstance();
+ dataStorage = (DataStorage)container.getComponentInstanceOfType(DataStorage.class);
+ POMSessionManager pomMgr = (POMSessionManager)container.getComponentInstanceOfType(POMSessionManager.class);
+ session = pomMgr.getSession();
+ }
+
+ private void createPage() throws Exception
+ {
+
+ Page page = new Page();
+ page.setTitle("MyTitle");
+ page.setOwnerType(PortalConfig.PORTAL_TYPE);
+ page.setOwnerId("test");
+ page.setName("foo");
+
+ dataStorage.create(page);
+ }
+
+ public void testAccessMixin() throws Exception
+ {
+ createPage();
+ Page page = dataStorage.getPage("portal::test::foo");
+
+ assertNotNull(page);
+ assertEquals("MyTitle", page.getTitle());
+ assertEquals("test", page.getOwnerId());
+ assertEquals("foo", page.getName());
+
+ SampleMixin sampleMixin = dataStorage.adapt(page, SampleMixin.class);
+ //Check the default value of sampleProperty property
+ assertEquals("SampleProperty", sampleMixin.getSampleProperty());
+ }
+
+ public void testModifyMixin() throws Exception
+ {
+ createPage();
+ Page page = dataStorage.getPage("portal::test::foo");
+
+ assertNotNull(page);
+ assertEquals("MyTitle", page.getTitle());
+ assertEquals("test", page.getOwnerId());
+ assertEquals("foo", page.getName());
+
+ SampleMixin sampleMixin = dataStorage.adapt(page, SampleMixin.class);
+ sampleMixin.setSampleProperty("FYM!");
+
+ Page page2 = dataStorage.getPage("portal::test::foo");
+ assertNotNull(page2);
+ SampleMixin sampleMixin2 = dataStorage.adapt(page2, SampleMixin.class);
+ assertEquals("FYM!", sampleMixin2.getSampleProperty());
+
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ session.close();
+ end();
+ super.tearDown();
+ }
+}
14 years, 4 months
gatein SVN: r3942 - in epp/portal/branches/EPP_5_0_Branch: webui/portal/src/main/java/org/exoplatform/portal/webui/application and 1 other directory.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-08-26 07:20:30 -0400 (Thu, 26 Aug 2010)
New Revision: 3942
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_en.properties
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_fr.properties
epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletForm.java
Log:
JBEPP-192: XSS in portlet settings
Modified: epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_en.properties
===================================================================
--- epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_en.properties 2010-08-26 09:32:37 UTC (rev 3941)
+++ epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_en.properties 2010-08-26 11:20:30 UTC (rev 3942)
@@ -323,6 +323,8 @@
UIPortletForm.Theme.title.SetDefault=Get Default
UIPortletForm.Icon.title.SetDefault=Get Default
UIPortletForm.msg.InvalidWidthHeight=You must enter a pixel value in field "{0}".
+UIPortletForm.msg.InvalidPortletTitle=Portlet title is invalid, it should not contain < or >.
+UIPortletForm.msg.InvalidPortletDescription=Portlet description is invalid, it should not contain < or >.
#############################################################################
# org.exoplatform.portal.component.customization.UIDescription #
Modified: epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_fr.properties
===================================================================
--- epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_fr.properties 2010-08-26 09:32:37 UTC (rev 3941)
+++ epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_fr.properties 2010-08-26 11:20:30 UTC (rev 3942)
@@ -299,6 +299,8 @@
UIPortletForm.Theme.title.SetDefault=Utiliser la valeur par défaut
UIPortletForm.Icon.title.SetDefault=Utiliser la valeur par défaut
UIPortletForm.msg.InvalidWidthHeight=Le champ "{0}" doit être une valeur en pixel!
+UIPortletForm.msg.InvalidPortletTitle=Le title de la portlet est invalide, il ne doit pas contenir < ni >.
+UIPortletForm.msg.InvalidPortletDescription=La description de la portlet est invalide, elle ne doit pas contenir < ni >.
#############################################################################
# org.exoplatform.portal.component.customization.UIDescription #
Modified: epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletForm.java
===================================================================
--- epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletForm.java 2010-08-26 09:32:37 UTC (rev 3941)
+++ epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletForm.java 2010-08-26 11:20:30 UTC (rev 3942)
@@ -113,7 +113,8 @@
addValidator(MandatoryValidator.class).setEditable(false)).
addUIFormInput(new UIFormStringInput("windowId", "windowId", null).setEditable(false)).*/
addUIFormInput(new UIFormInputInfo("displayName", "displayName", null)).addUIFormInput(
- new UIFormStringInput("title", "title", null).addValidator(StringLengthValidator.class, 3, 60))
+ new UIFormStringInput("title", "title", null).addValidator(StringLengthValidator.class, 3, 60).addValidator(ExpressionValidator.class, "[^\\<\\>]*",
+ "UIPortletForm.msg.InvalidPortletTitle"))
.addUIFormInput(
new UIFormStringInput("width", "width", null).addValidator(ExpressionValidator.class, "(^([1-9]\\d*)px$)?",
"UIPortletForm.msg.InvalidWidthHeight")).addUIFormInput(
@@ -123,7 +124,7 @@
new UIFormCheckBoxInput("showPortletMode", "showPortletMode", false)).addUIFormInput(
new UIFormCheckBoxInput("showWindowState", "showWindowState", false)).addUIFormInput(
new UIFormTextAreaInput("description", "description", null).addValidator(StringLengthValidator.class, 0,
- 255));
+ 255).addValidator(ExpressionValidator.class, "[^\\<\\>]*", "UIPortletForm.msg.InvalidPortletDescription"));
addUIFormInput(uiSettingSet);
UIFormInputIconSelector uiIconSelector = new UIFormInputIconSelector("Icon", "icon");
addUIFormInput(uiIconSelector);
14 years, 4 months