[infinispan-dev] Configuration reference - final solution
Vladimir Blagojevic
vblagoje at redhat.com
Fri Aug 21 06:28:15 EDT 2009
On 21/08/09 12:18 PM, Manik Surtani wrote:
> I would say this should be on the infinispan-dev list - but the list
> is broken at the moment! :P
>
> On 21 Aug 2009, at 11:14, Vladimir Blagojevic wrote:
>
>> Hey,
>>
>> We have two options for the final HTML configuration reference solution:
>>
>> - keep things as they are and maintain our documentation annotations
>> (CofigurationElement, ConfigurationAttribute etc)
>> - implement a new solution based on XML Schema and javadoc comments
>>
>> Since you are familiar with the first let me explain the second. The
>> new solution loads created XML Schema using XSOM library and creates
>> in-memory tree representation of that schema. Once that is done it is
>> very simple to create exact same reference as it is today, however,
>> the content would be coming from source file javadoc, not annotations
>> as it is today. We would simply document our Java classes that
>> correspond to XML schema elements with special @ tags. All
>> documentation related to attributes, general element description in
>> configuration reference would be coming from our own javadoc @tags.
>>
>> One shortcoming of the new solution is that not all types of loaders
>> would be documented. Recall, how different loaders allow special
>> properties and how these are documented in configuration reference.
>> Proposed new solution would not contain these but as a trade-off we
>> would get rid of all these ConfigurationElement annotations. Hmmm,
>> now that I am writing this email I realize that it would be still
>> possible to do document all these different loaders but it would
>> require a bit more effort - an extra day or two. It is doable.
>
> What does the 2nd solution entail by way of dependencies? I assume we
> already have all of the JSXB deps we need?
There extra two dependencies: xsom.jar and relaxngDatatype.jar
> Perhaps a few more deps for the generation tool, but nothing more for
> the distro/runtime?
Yes, strictly in tools project. These would not go into distro.
>
> Also, is there any impact (performance-wise or anything else) on the
> runtime?
Maybe on tools execution time but infinispan runtime absolutely not.
>
> Finally, what are these extra Javadoc tags going to look like? Could
> you show us a short sample?
/**
*
* @configElementRef locking
* @configElementDoc any documentation here
*/
@XmlAccessorType(XmlAccessType.PROPERTY)
private static class LockingType extends
AbstractNamedCacheConfigurationBean{
/** The serialVersionUID */
private static final long serialVersionUID = 8142143187082119506L;
@Dynamic
private Long lockAcquisitionTimeout = 10000L;
private IsolationLevel isolationLevel =
IsolationLevel.READ_COMMITTED;
private Boolean writeSkewCheck = false;
private Boolean useLockStriping = true;
private Integer concurrencyLevel = 500;
/**
* @configElementDoc reference documentation here
*/
@XmlAttribute
public void setLockAcquisitionTimeout(Long lockAcquisitionTimeout) {
testImmutability("lockAcquisitionTimeout");
this.lockAcquisitionTimeout = lockAcquisitionTimeout;
}
/**
* @configElementDoc reference documentation here
*/
@XmlAttribute
public void setIsolationLevel(IsolationLevel isolationLevel) {
testImmutability("isolationLevel");
this.isolationLevel = isolationLevel;
}
/**
* @configElementDoc reference documentation here
*/
@XmlAttribute
public void setWriteSkewCheck(Boolean writeSkewCheck) {
testImmutability("writeSkewCheck");
this.writeSkewCheck = writeSkewCheck;
}
/**
* @configElementDoc reference documentation here
*/
@XmlAttribute
public void setUseLockStriping(Boolean useLockStriping) {
testImmutability("useLockStriping");
this.useLockStriping = useLockStriping;
}
@XmlAttribute
public void setConcurrencyLevel(Integer concurrencyLevel) {
testImmutability("concurrencyLevel");
this.concurrencyLevel = concurrencyLevel;
}
}
More information about the infinispan-dev
mailing list