cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeremias Maerki (JIRA)" <>
Subject [jira] Commented: (CAY-1256) [PATCH] Easily subclassable ExtendedEnumType for reusing an existing Enum
Date Thu, 13 Aug 2009 11:42:15 GMT


Jeremias Maerki commented on CAY-1256:

Sure, it's not difficult, but well, I don't have to implement the full ExtendedType interface
including the lookup list for the enum values. Instead of  80+ lines I get away with 20 (where
the actual meat on the bone is just three). Saves a lot of testing and most of all: time.
I can put this in my own project but I thought it might be useful for someone else which is
why I made the patch. If it doesn't help, it doesn't hurt, either. Right? ;-)

BTW, what I forgot to mention: there was this line:
statement.setString(pos, (String) e.getDatabaseValue());

Yes, the javadocs say it should be an Integer or a Character but If the return type is a Character
rather than a String, it goes boom here. My patch uses toString() instead. Just in case.

> [PATCH] Easily subclassable ExtendedEnumType for reusing an existing Enum
> -------------------------------------------------------------------------
>                 Key: CAY-1256
>                 URL:
>             Project: Cayenne
>          Issue Type: Improvement
>          Components: Cayenne Core Library
>            Reporter: Jeremias Maerki
>         Attachments: EasilySubclassableExtendedEnumType.diff
> I've had this enum class that has character codes that I use in a CHAR(1) field.
> public enum Status {
>     NEW('N'), PENDING('P'), CANCELLED('X'), CLOSED('C');
> [..]
> I didn't want that enum class to introduce a dependency on Cayenne (through the ExtendedEnumeration
interface. So I changed ExtendedEnumType a bit so you can support that enum class with just
a few lines of code and without using ExtendedEnumeration.
> Please see the patch for an example. I've written a test case for this although this
just covers the materialization.
> In the application code I can now simply do this to register the type:
>         node.getAdapter().getExtendedTypes().registerType(new StatusExtendedEnumType());
> (my StatusExtendedEnumType is basically the same as the MockEnumWithCodeEnumType in the
> I hope you find this useful, too. Patch is against Cayenne Trunk.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message