[infinispan-dev] Configuration reference - final solution

Manik Surtani manik at jboss.org
Wed Aug 26 09:17:06 EDT 2009


Thanks Vladimir!

On 26 Aug 2009, at 14:12, Vladimir Blagojevic wrote:

> Hey guys,
>
> I've committed a massive change that removed all our annotations  
> that were previously used for configuration. A new solution and a  
> more permanent one is in place. It is described below.
>
> In the next day or so I'll complete a few minor remaining tasks  
> along with documentation Manik outlined below.
>
> Regards,
> Vladimir
>
> On 21/08/09 12:33 PM, Manik Surtani wrote:
>> Yeah, looks good to me.  :-)
>>
>> Could you also pls create a wiki page - perhaps linked to http://www.jboss.org/community/wiki/InfinispanQuickStartGuideforDevelopers 
>>  - on how to create new configuration elements.
>>
>> Basically, creating a new configuration variable should entail:
>>
>> 1.  Adding setter and getter to the Configuration bean?   What else?
>> 2.  Annotating accordingly - which annotations?  Where?  On setter?
>> 3.  Javadoc accordingly - any custom tags to use?
>> 4.  Unit tests and sample cfg files to ship?  Where are these?
>>
>> Also, you should blog about this - and link to this wiki page in  
>> your blog!
>>
>> Thanks!
>> Manik
>>
>> On 21 Aug 2009, at 11:28, Vladimir Blagojevic wrote:
>>
>>> 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;
>>>     }
>>>  }
>>
>> -- 
>> Manik Surtani
>> manik at jboss.org
>> Lead, Infinispan
>> Lead, JBoss Cache
>> http://www.infinispan.org
>> http://www.jbosscache.org
>>
>>
>>
>>
>

--
Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org







More information about the infinispan-dev mailing list