Either way is fine by me. I don't think there is a significant difference.
Regards,
Tim
Spark Shen wrote:
> 2007/7/12, Alexei Zakharov <[EMAIL PROTECTED]>:
>>
>> Spark,
>>
>> I don't see many reasons to couple all persistence delegates into a
>> single class. IMO "one class to one persistence delegate" model is
>> obvious and easy to understand. AFAIU RI implements its persistence
>> delegates in this way. BTW what do you mean by code duplication here?
>
>
> For example, looking into the implementation for
> java_lang_BytePersistenceDelegate & java_lang_DoublePersistenceDelegate.
> They both have a instantiate method and an empty initialize method.
> The instantiate method of BytePersistenceDelegate is like:
> Byte value = (Byte) oldInstance;
> return new Expression(oldInstance, Byte.class, "new",new Object[] {
> value });
>
> while the instantiate method of DoublePersistenceDelegate is like:
> Double value = (Double) oldInstance;
> return new Expression(oldInstance, Double.class, "new", new Object[]
> { value }); //$NON-NLS-1$
>
> IMHO, the logic are similar, and can be changed to:
> return new Expression(oldInstance, oldInstance.getClass(),
> "new", new Object[] { oldInstance });
> The situation exist for other primitive type persistence delegate. They are
> the PDs I listed in my original post.
>
> The behavior of instantiate() method is unique to each PD and all that
>> we can do is to create a single class with a big big switch that
>> includes the code from all our PDs. Do we really want this?
>
>
> I agree with you that a big switch is not a good method. I think we can
> put
> PrimitiveTypePersistenceDelegate into the persistenceDelegates in class
> initializer instead of a big switch:
> static PrimitiveTypePersistenceDelegate primitiveTypePD = new
> PrimitiveTypePersistenceDelegate();
> static {
> persistenceDelegates.put(int.class, primitiveTypePD);
> persistenceDelegates.put(double.class, primitiveTypePD);
> // etc.
> }
> There is another benefit here: we eliminate type name extraction logic for
> primitive type.
>
>> IMHO it is
>> not an Object-Oriented way.
>>
>> Sorry if I misunderstand your idea. Please explain in more details if so.
>>
>> Thanks,
>>
>> 2007/7/12, Spark Shen <[EMAIL PROTECTED]>:
>> > During developing PersistenceDelegate for java.lang.reflect.Field, I
>> find
>> > code duplication in many primitive type persistence delegate.
>> >
>> > There are 8 primitiveType persistenceDelegate:
>> > java_lang_BooleanPersistenceDelegate
>> > java_lang_BytePersistenceDelegate
>> > java_lang_CharacterPersistenceDelegate
>> > java_lang_DoublePersistenceDelegate
>> > java_lang_FloatPersistenceDelegate
>> > java_lang_IntegerPersistenceDelegate
>> > java_lang_LongPersistenceDelegate
>> > java_lang_ShortPersistenceDelegate
>> >
>> > Each of the 8 class has two method: instantiate & initialize, and the
>> logic
>> > of the 2 methods are similar.
>> > IMO, we could use one PrimitiveTypePersistenceDelegate instead to
>> reduce
>> > code duplication.
>> > --
>> > Spark Shen
>> > China Software Development Lab, IBM
>> >
>>
>>
>> --
>> Alexei Zakharov,
>> Intel ESSD
>>
>
>
>