From: Harkness, D. <DHa...@so...> - 2004-05-05 19:35:38
|
Sateesh kumar wrote: > My name is sateesh. > I am a beginer to xdoclet. Welcome aboard! > I have a simple CMP2.0 bean and i have a abstract > method >=20 > public abstract Long getABa(); >=20 > For this method XDoclet generates ABa as the cmp-field > name in ejb-jar.xml > But when i run weblogic's ejbc, i get an error > complaining that > first letter of cmp-field name has to be a lower case letter. This was discussed a while ago, and I thought I saw a JIRA issued about it that got completed (fixed). Perhaps it will be in the 1.2.1 release? Anyway, you are correct. The field name must begin with a lowercase letter. The problem (IIRC) is that XDoclet will *not* lowercase the first letter if the second letter is also uppercase. This is the problem, and the work-around is simple: Don't name your fields with two initial capital letters. As a side note, I decided long ago to follow InitCap style for acronyms. I'm working on some OpenMG stuff but decided to go with the acronym to shorten class names. One class generates a DMF (delivery metafile) to instruct the client to download songs. In the past it would have been called OMGDMFGenerateAction. Ugh. Is that "OM" "GDMF"? "OMGD" "MF"? It's impossible to tell when run together. Following the InitCap rule, however, makes it OmgDmfGenerateAction. Sure, "Omg" looks like it's supposed to be a word rather than an acronym, but at least it's no longer ambiguous (and seriously who would think "Dmf" is a word?). This stops problems like the one you've found from occurring, and it makes variable names nicer. What do you call an instance of this class? OMGDMFGenerateAction oMGDMFGen =3D ... Yikes, that's atrocious. The "o" looks like a Hungarian "Object" prefix, obliterating the acronym. Anyway, long story short, rename your method to "getAba" and you'll be all set. Or get the 1.2.1 version (any day now) and see if it solves the issue. Good luck! David Harkness Sr. Software Engineer Sony Pictures Digital Networks (310) 482-4756 |
From: Harkness, D. <DHa...@so...> - 2004-05-05 19:44:49
|
Harkness, David wrote: > As a side note, I decided long ago to follow InitCap style for=20 > acronyms. Oh, and the corollary to that is "Don't ever use a single-letter word in a name." If your method (getABa) means "get a 'Ba' attribute", rename it "getBa". One problem arises when you prefix interface names with "I", which I don't. BTW, I came to this decision while writing a JavaDoc-style documentation generator for PowerBuilder in 1995. To handle some of my classes I started adding a way to specify the application's acronyms to the generator. After a little work, I finally decided that it was a Bad Idea (tm) and switched to InitCaps for acronyms. Um, I'm done. *steps off his high horse* David Harkness Sr. Software Engineer Sony Pictures Digital Networks (310) 482-4756 |
From: Rupp, H. <Hei...@ce...> - 2004-05-06 06:33:21
|
Hi,=20 >I think i found a small problem in XDoclet. >I explain it by a simple example. > >I have a simple CMP2.0 bean and i have a abstract method > >public abstract Long getABa(); > >For this method XDoclet generates ABa as the cmp-field name in=20 >ejb-jar.xml But when i run weblogic's ejbc, i get an error=20 >complaining that first letter of cmp-field name has to be a=20 >lower case letter. > >which means the generated cmp-field name has to be either=20 >"aBa" or "aba". >In any case, first letter has to be a lower case letter. > >I have gone through the source code of XDoclet, and i feel the=20 >problem lies in CmpTagsHandler.java file. There are reports (and lengthy discussions) in JIRA wrt this. Basically it comes to the point of interpreting the EJB-spec. Have e.g. a look at http://opensource.atlassian.com/projects/xdoclet/browse/XDT-528 Heiko |