Hmm, that actually wont work since Bucket is Externalizable. What we
should do this this:
1. Ensure we have a ctor that takes in a name. This is the only ctor
that should be used by the cache stores directly, and should be
documented as such.
2. The empty ctor is purely for deserialization. And this should be
documented accordingly as well. With all the caveats that if it is
used, the name *must* be set immediately afterwards.
3. Provide a helper method in BucketBasedCacheStore to load a bucket
from a stream.
protected final Bucket loadFromStream(String bucketName, ObjectInput
in) {
// read from stream
// set name
// return
}
so that store impls never have to worry about setting the name, even
if the bucket is obtained by deserializing a stream.
WDYT?
Cheers
Manik
On 9 Apr 2009, at 17:47, Adrian Cole wrote:
+1 for making bucket name final, set in constructor.
On Thu, Apr 9, 2009 at 6:45 PM, Manik Surtani <manik(a)jboss.org> wrote:
> Is there any reason for a Bucket's name *not* to be final, and as
> such, set
> in its constructor?
>
> On 9 Apr 2009, at 17:40, Adrian Cole wrote:
>
>> When in BucketBasedCacheStore.removeLockSafe, the following is
>> called:
>>
>> Bucket bucket = loadBucket(keyHashCodeStr);
>>
>> now, the bucket returned does not always have its name set (at least
>> in the BaseCacheStoreTest:402)
>>
>> I would suggest to either enforce bucket's immutable name field, or
>> ensure it is set on all options. Otherwise, all cachestore
>> implementations have to check this individually.
>>
>> WDYT?
>>
>> -Adrian
>>
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
> --
> Manik Surtani
> manik(a)jboss.org
> Lead, Infinispan
> Lead, JBoss Cache
>
http://www.infinispan.org
>
http://www.jbosscache.org
>
>
>
>
>
--
Manik Surtani
manik(a)jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org