From: Vincent H. <vin...@hu...> - 2002-02-28 21:54:24
|
Does your related beans (the tagged ones) are in the sourcepath of <ejbdoclet/> I need theem :) Vincent > -----Original Message----- > From: xdo...@li...=20 > [mailto:xdo...@li...] On Behalf=20 > Of Steve Knight > Sent: jeudi 28 f=E9vrier 2002 22:44 > To: vin...@hu...; xdo...@li... > Subject: Re: [Xdoclet-user] Aggregate DataObjects >=20 >=20 > Vincent, > I am having problems using 1-n value objects. > <entitycmp/> fails whenever it tries to generate the CMP for=20 > a bean with a 1-n value object defined: >=20 > Running <entitycmp/> > Generating CMP class for 'com.elequip.ejb.AssetBean'. > Running XDoclet failed. > <<Javadoc couldnt load class {0}, add it to the sourcepath=20 > please.>> 1 error 58 warnings > javadoc: In doclet class xdoclet.DocletTask$DocletMain, =20 > method start has thrown an exception=20 > java.lang.reflect.InvocationTargetException > E:\MultiViewTest\build.xml:79: Javadoc returned 1 > at org.apache.tools.ant.taskdefs.Javadoc.execute(Javadoc.java:966) > at xdoclet.DocletTask.execute(DocletTask.java:240) > at=20 > org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:104) > at org.apache.tools.ant.Task.perform(Task.java:217) > at org.apache.tools.ant.Target.execute(Target.java:184) > at org.apache.tools.ant.Target.performTasks(Target.java:202) > at org.apache.tools.ant.Project.executeTarget(Project.java:601) > at org.apache.tools.ant.Project.executeTargets(Project.java:560) > at com.intellij.ant.AntMain.a(AntMain.java:114) > at com.intellij.ant.AntMain.a(AntMain.java:211) > at com.intellij.ant.AntMain.main(AntMain.java:125) > E:\MultiViewTest\build.xml:79: Javadoc returned 1 > at org.apache.tools.ant.taskdefs.Javadoc.execute(Javadoc.java:966) > at xdoclet.DocletTask.execute(DocletTask.java:240) > at=20 > org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:104) > at org.apache.tools.ant.Task.perform(Task.java:217) > at org.apache.tools.ant.Target.execute(Target.java:184) > at org.apache.tools.ant.Target.performTasks(Target.java:202) > at org.apache.tools.ant.Project.executeTarget(Project.java:601) > at org.apache.tools.ant.Project.executeTargets(Project.java:560) > at com.intellij.ant.AntMain.a(AntMain.java:114) > at com.intellij.ant.AntMain.a(AntMain.java:211) > at com.intellij.ant.AntMain.main(AntMain.java:125) > E:\MultiViewTest\build.xml:79: Javadoc returned 1 > at org.apache.tools.ant.taskdefs.Javadoc.execute(Javadoc.java:966) > at xdoclet.DocletTask.execute(DocletTask.java:240) > at=20 > org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:104) > at org.apache.tools.ant.Task.perform(Task.java:217) > at org.apache.tools.ant.Target.execute(Target.java:184) > at org.apache.tools.ant.Target.performTasks(Target.java:202) > at org.apache.tools.ant.Project.executeTarget(Project.java:601) > at org.apache.tools.ant.Project.executeTargets(Project.java:560) > at com.intellij.ant.AntMain.a(AntMain.java:114) > at com.intellij.ant.AntMain.a(AntMain.java:211) > at com.intellij.ant.AntMain.main(AntMain.java:125) >=20 > Build completed with 3 errors and 59 warnings. Time: 31 s >=20 >=20 > It seems to stop just after generating the ejbRemove and just=20 > before the section headed by: /* Value Objects BEGIN */ I=20 > don't know what this line "<<Javadoc couldnt load class {0},=20 > add it to the sourcepath please.>>" is referring to? >=20 > Am I forgetting to include something??? I have been trying=20 > to follow the examples, but I am still unsure as to the=20 > purpose of the "members-name" tag. I have tried 1-1=20 > relationships and it works beautifully. >=20 > Any ideas? >=20 > Thanks, >=20 > Steve >=20 >=20 >=20 >=20 > ----- Original Message ----- > From: "Vincent Harcq" <vin...@hu...> > To: "'Steve Knight'" <sck...@ho...>;=20 > <xdo...@li...> > Sent: Thursday, February 28, 2002 2:13 PM > Subject: RE: [Xdoclet-user] Aggregate DataObjects >=20 >=20 > The diff are on the entity bean accessor >=20 > Create: > comp : creation of composed > aggr : fbpk + set link > Remove: > comp : deletion of composed > aggr : - > Set: > comp : fbpk + set link + set on composed > aggr : fbpk + set link > Get: > comp : fbpk + get Cached > aggr : fbpk + get at every call >=20 > This was made for cmp1.1 relation in mind so maybe some of=20 > these have no or less sense with cmp2. >=20 > Vincent >=20 >=20 >=20 > > -----Original Message----- > > From: Steve Knight [mailto:sck...@ho...] > > Sent: jeudi 28 f=E9vrier 2002 18:45 > > To: vin...@hu...; xdo...@li... > > Subject: Re: [Xdoclet-user] Aggregate DataObjects > > > > > > Thanks for the explanation, Vincent. > > I am now using value objects and so far so good. > > I understand the difference between Aggregation and=20 > Composition, but=20 > > what is the difference in terms of what gets generated by XDoclet? > > > > Thanks, > > > > Steve > > > > > > ----- Original Message ----- > > From: "Vincent Harcq" <vin...@ya...> > > To: "'Steve Knight'" <sck...@ho...>;=20 > > <xdo...@li...> > > Sent: Monday, February 25, 2002 2:14 PM > > Subject: RE: [Xdoclet-user] Aggregate DataObjects > > > > > > OK > > > > You need <valueobject/> subtask > > > > AddressBean have @ejb:value-object name=3D"Address" match=3D"*"=20 > > instantiation=3D"eager" That means that a AddressValue will=20 > be created=20 > > containing all fields of the entity bean "eager" means the=20 > VO is build=20 > > on ejbLoad > > > > Customer Bean have > > * @ejb:value-object name=3D"CustomerLight" match=3D"light" > > * @ejb:value-object name=3D"CustomerNormal" match=3D"normal"=20 > > instantiation=3D"eager" > > * @ejb:value-object name=3D"Customer" match=3D"*" > > > > 3 VO will be build. CustomerValue containing all fields=20 > > CustomerNormalValue contains only fields that have a corresponding=20 > > @ejb:value-object match=3D"normal" For example > > getCredit() Etc... For LightValue > > > > You can avoid a field appearing in the VO (for example I=20 > > XMLized/String Object that are saved in the DB and SAX them=20 > on read. =20 > > Then my String has no meaning in my VO. I want the object. Use =20 > > @ejb:value-object match=3D"*" exclude=3D"true" > > (Account.getLastModifiedDate) to avoid a field to be picked=20 > up in the=20 > > VO In the opposite use @ejb:value-object name=3D"..."=20 > match=3D"..." on non=20 > > persistent fields to put it in the VO See Accountean.getTotalAmount > > > > The attribute relation=3D"external" on a field say this:=20 > because the VO=20 > > is cached in the bean, sometimes you wan to update some=20 > fields because=20 > > you did not have an setSth() that killed your VO. For example=20 > > TotalAmount looks at other Account. The Acount on wich you get the=20 > > VO, you must rerun this computation at get time. > > > > Aggregation (1-1) > > AccountBean ---> CustomerBean > > @ejb:value-object match=3D"*" aggregate=3D"CustomerNormalValue"=20 > > aggregate-name=3D"OwnerNormalValue" > > > > Association (1-1) > > CustomerBean ---> AddressBean > > ... > > > > For these look at generated code. The idea is=20 > "responsability" of an=20 > > entity bean over its related relationship For Composition Customer=20 > > knows he is the master of Address, .... In all these,=20 > > aggregate/compose is the Java type of the aggregate/compose VO (you=20 > > could read test.interfaces... In fact)=20 > Aggregate-name/compose-name is > > the name given to the get/set method > > > > Aggregation (1-n) > > CustomerBean ---> AccountBean > > @ejb:value-object match=3D"*" aggregate=3D"CustomerNormalValue"=20 > > aggregate-name=3D"OwnerNormalValue" ... > > > > Association (1-n) > > CustomerBean ---> AddressBean > > @ejb:value-object > > * match=3D"normal" > > * type=3D"Collection" > > * relation=3D"external" > > * compose=3D"test.interfaces.AddressValue" > > * compose-name=3D"ShippingAddressValue" > > * members=3D"test.interfaces.Address" > > * members-name=3D"ShippingAddress" > > > > For 1-n I also need the type of what is in the Collection so the=20 > > members and members-name For 1-n relation=3D"external" should=20 > always be=20 > > used. > > > > Finally this has not been tested and was written with CMP=20 > 1.1 in mind,=20 > > so more work will be needed for sure. This covers more than Data=20 > > Object but I am listening to any improvements that could be added... > > > > Vincent > > > > > > > -----Original Message----- > > > From: xdo...@li... > > > [mailto:xdo...@li...] On Behalf > > Of Steve > > > Knight > > > Sent: lundi 25 f=E9vrier 2002 16:30 > > > To: xdo...@li... > > > Subject: Re: [Xdoclet-user] Aggregate DataObjects > > > > > > > > > Hi Vincent, > > > Would you mind providing a brief explanation of how to use=20 > > > ValueObjects. I am looking at the XDoclet samples, but I=20 > think an=20 > > > explanation might be helpful as well. > > > > > > Thanks, > > > > > > Steve > > > > > > > > > > > > ----- Original Message ----- > > > From: "Vincent Harcq" <vin...@ya...> > > > To: <bwi...@pd...>; <sck...@ho...>;=20 > > > <xdo...@li...> > > > Sent: Monday, February 25, 2002 8:12 AM > > > Subject: RE: [Xdoclet-user] Aggregate DataObjects > > > > > > > > > > Aggregation on _DataObjects_ works only for 1-1 > > > relationship. For 1-n, > > > > you may want to look at _ValueObject_ (only in cvs and=20 > not fully=20 > > > > tested). It is a kind of _DataObject_ but more=20 > sophiticated. We=20 > > > > introduced there 1-n relationships (as well as multiple VO > > > per entity > > > > bean with bean's attributes matching facility,=20 > > > > aggregation/composition, > > > > ...) Have a look if you want. I'll appreciate feedback :) > > > > > > > > Vincent > > > > > > > > --- bwi...@pd... wrote: > > > > > Hi, > > > > > > > > > > I'm also interested in knowing more about this. From what I=20 > > > > > understand is you can put an ejb:aggregate task in the > > > javadocs for > > > > > a method: eg. for > > > > > public abstract Collection getAddresses() in a person > > > entity bean and > > > > > then I > > > > > would get a method in my person value object as follows: > > > public void > > > > > setAddresses(Collection addresses) and public Collection=20 > > > > > getAddresses(). > > > > > > > > > > If I include ejb:aggregate as such I get the following error: > > > > > > > > > > [ejbdoclet] Running XDoclet failed: > > > > > [ejbdoclet] <<The bean implementation class for interface=20 > > > > > 'java.util.Collection' not found!>> [ejbdoclet] 1 error=20 > > > > > [ejbdoclet] 100 warnings [ejbdoclet] javadoc: In doclet class > > > xdoclet.DocletTask$DocletMain, > > > > > method > > > > > star > > > > > t has thrown an exception > > > java.lang.reflect.InvocationTargetException > > > > > > > > > > BUILD FAILED > > > > > > > > > > What is wrong here? > > > > > > > > > > Thanks :) > > > > > Bernie > > > > > > > > > > -----Urspr=FCngliche Nachricht----- > > > > > Von: Steve Knight [mailto:sck...@ho...] > > > > > Gesendet: Samstag, 23. Februar 2002 19:15 > > > > > An: xdo...@li... > > > > > Betreff: [Xdoclet-user] Aggregate DataObjects > > > > > > > > > > > > > > > Hello, > > > > > Can someone please explain how to use XDoclet to make=20 > Aggregate=20 > > > > > DataObjects. I realize there is a ejb:aggregate tag, > > but I'm not > > > > > sure how to use it properly. And what gets generated? > > > > > > > > > > Thanks, > > > > > > > > > > Steve > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > __________________________________________________ > > > > Do You Yahoo!? > > > > Yahoo! Sports - Coverage of the 2002 Olympic Games=20 > > > > http://sports.yahoo.com > > > > > > > > _______________________________________________ > > > > Xdoclet-user mailing list Xdo...@li... > > > > https://lists.sourceforge.net/lists/listinfo/xdoclet-user > > > > > > > > > > _______________________________________________ > > > Xdoclet-user mailing list Xdo...@li... > > > https://lists.sourceforge.net/lists/listinfo/xdoclet-user > > > > > > > > > > > > > > > > > _________________________________________________________ > > Do You Yahoo!? > > Get your free @yahoo.com address at http://mail.yahoo.com > > > > > > > > >=20 >=20 >=20 >=20 > _______________________________________________ > Xdoclet-user mailing list > Xdo...@li... > https://lists.sourceforge.net/lists/listinfo/xdoclet-user >=20 >=20 |