* @throws ReportWriterException if there is a problem writing the report.
*/
private void writeKeyValue(final StyleKey key, final Object o)
throws IOException, ReportWriterException
{
final ObjectDescription od = findObjectDescription(key, o);
if (od == null)
{
throw new ReportWriterException("Unable to find object description for key: "
+ key.getName());
}
try
{
od.setParameterFromObject(o);
}
catch (ObjectFactoryException e)
{
throw new ReportWriterException("Unable to fill the parameters for key: " + key.getName(), e);
}
final StyleKey keyFromFactory = getReportWriter().getStyleKeyFactoryCollector()
.getStyleKey(key.getName());
if (keyFromFactory == null)
{
throw new ReportWriterException
("The stylekey " + key.getName() +
" has no corresponding key description.");
}
final AttributeList p = new AttributeList();
p.setAttribute(ExtParserModule.NAMESPACE, "name", key.getName());
if (isUseKeyObjectDescription(key, o) == false)
{
p.setAttribute(ExtParserModule.NAMESPACE, "class", o.getClass().getName());
}
final XmlWriter writer = getXmlWriter();
final List parameterNames = getParameterNames(od);
if (isBasicKey(parameterNames, od))
{
writer.writeTag(ExtParserModule.NAMESPACE, AbstractXMLDefinitionWriter.BASIC_KEY_TAG, p, XmlWriterSupport.OPEN);
writer.writeTextNormalized((String) od.getParameter("value"), false);
writer.writeCloseTag();
}
else
{
writer.writeTag(ExtParserModule.NAMESPACE, AbstractXMLDefinitionWriter.COMPOUND_KEY_TAG, p,