[jbosscache-dev] Let's make 3.0 backwards compatible

Jason T. Greene jason.greene at redhat.com
Tue Aug 26 09:29:58 EDT 2008


Manik Surtani wrote:
> 
> On 26 Aug 2008, at 00:50, Jason T. Greene wrote:
> 
>> Manik Surtani wrote:
>>> On 21 Aug 2008, at 09:11, Manik Surtani wrote:
>>>>>
>>>>> #1, I don't know how much that screws you up.
>>>>
>>>> #1 seems like the cleanest/easiest thing as far as the AS and other 
>>>> API consumers are concerned, even if it does pollute JBC API.  I 
>>>> plan to spend a few cycles today revisiting these and seeing what 
>>>> can be done to maintain compat.  For the most part (Cache, Fqn, 
>>>> CacheFactory) this should be ok, just would mean having a lot of 
>>>> deprecated methods around, but for the Eviction and Region 
>>>> interfaces it could be tricky.  Could mean some sort of internal 
>>>> adapter.
>>> Ok, I think this is doable.  Unnecessary deprecated crud on most 
>>> interfaces, but this is ok.  The only *really* messy one is the 
>>> eviction stuff.  To do this, I have:
>>> 1.  Reverted interfaces so that EvictionPolicy, EvictionPolicyConfig 
>>> and EvictionAlgorithm are as they were in 2.x.
>>> 2.  My new EvictionAlgorithm interface and it's 
>>> EvictionAlgorithmInterface have been renamed to EvictionSelector and 
>>> EvictionSelectorConfig - as I should have done from the beginning to 
>>> prevent confusion
>>> 3.  Internal eviction logic all use the EvictionSelector and 
>>> EvictionSelectorConfig interfaces.
>>> 4.  I have created an EvictionAlgorithmSelectorBridge which 
>>> implements EvictionSelector, which will be used when a legacy 
>>> EvictionPolicy is detected.
>>> 5.  Existing EvictionAlgorithm implementations have now been renamed 
>>> XXXSelector and implement EvictionSelector
>>> 6.  The original XXXAlgorithm classes extend the XXXSelector, 
>>> implement EvictionAlgorithm and are marked as deprecated, and are 
>>> just here as an extension point.
>>> 7.  New features, such as EvictionActionPolicies, are not supported 
>>> by this bridge (naturally!)
>>> Not checked any of this in as yet, still testing away.  :-)  I ought 
>>> to be ready to check this in tomorrow, test with AS 5 trunk, etc.
>>
>> I saw your changes, and reverted my recent POJO Cache changes to 
>> restory the usage of the 2.x API. I had to make some other changes 
>> including:
>>
>> - Resurrecting JmxUtil (this is needed by PojoCacheJmxWrapper, to know 
>> where to register CacheJmxWrapper)
> 
> Have you had a look at the new JMX stuff that Mircea has written?  Could 
> you not use those instead of JmxUtil?

Yeah, it's not compatible with the jmx wrapper stuff.

>> - Move InvocationContext from org.jboss.cache.invocation to 
>> org.jboss.cache (otherwise the 2.x import statements will break)
> 
> Good catch.
> 
>> - Restored generics on Fqn, but with some nice improvements that make 
>> them useful:
>>
>> i.e. you can now do stuff like:
>> Fqn<String> fqn = Fqn.fromString("/a/b/c");
>> Fqn<Object> fq2 = Fqn.fromRelativeElements(fqn, new Object());
> 
> I had already restored these in trunk (by adding the <E> template on the 
> Fqn class), but hadn't genericised return types on the methods.  Thx for 
> fixing the factory methods.
> 
>> Also, there are still issues with JMX. The wrappers no longer support 
>> the old format, and some properties have been dropped. Also I need to 
>> somehow mirror the new JMX API for POJO Cache, although is it ready yet?
> 
> Yes, this is - Mircea?  Feel like pitching in?

Sure, if Mircea could do a quick overview of what the goals and usage of 
this API are, I could look at extending it to POJO Cache.


> Also, what do you mean by the "old format"?  The JmxCacheWrapper should 
> not have changed.
> 

It was updated to take the new config file format, as were all tests 
that use it:

  private BuddyElementParser buddyElementParser = new BuddyElementParser();
    private LoadersElementParser loadersElementParser = new 
LoadersElementParser();
    private EvictionElementParser evictionElementParser = new 
EvictionElementParser();


-- 
Jason T. Greene
JBoss, a division of Red Hat



More information about the jbosscache-dev mailing list