Hi again Alen,

try this:
    <class-descriptor class="ValidatorForm">
       <extent-class class-ref="za.co.alen.jfaq.User" />
    </class-descriptor>

    <class-descriptor
      class="za.co.alen.jfaq.User"
      table="User"
      <extent-class class-ref="za.co.alen.jfaq.RegisterForm" />
      <extent-class class-ref="za.co.alen.jfaq.LgonForm" />
    >
      <!-- field mappings -->
      ...
    </class-descriptor>

    <class-descriptor
      class="za.co.alen.jfaq.RegisterForm"
      table="User"
    >
      <!-- same field mappings as for User class + possibly some more -->
      ...
    </class-descriptor>

    <class-descriptor
      class="za.co.alen.jfaq.LogonForm"
      table="User"
    >
      <!-- same field mappings as for User class + possibly some more  -->
      ...
    </class-descriptor>

You should also have a look at the repository_junit.xml, it contains *a lot* of inheritance examples!

cheers,
Thomas



Alen Ribic wrote:
Ok I'm back again on this one.
Lets try this again.

My objective:

Using Struts, I will need to create form bean for each Struts form.

So, for example, I will create RegisterForm and LogonForm classes.
As you can se now, these two classes will have similarities in their
getter/setter methods.

Hence I would like to Create a single User class that all these similar form
beans can inherit.

public class RegisterForm extends User {
    // inherits necessary setters/getters from User class
    public ... validate(...) { // override superclasses version
    }
}

public class LogonForm extends User {
    // inherits necessary setters/getters from User class
    public ... validate(...) { // override superclasses version
    }
}

Now I want my form beans also to inherit ValidatorForm class.

So, I add extends on User class as follows: (don't really think this one is
cool, but anyway, it works :) )

public class User extends ValidatorForm {
    // setter/getter properties
}

As far as Struts side of things, this seems to be working fine so far.

Only reason I make use of form classes here that inherit my User class is
because of validation requirements specific to each individual form. (needed
in my Struts config) Now there is no way I'm rewriting my User specific
setter/getter properties for each of my forms, e.g. RegisterForm, LogonForm.
Both of these form beans will contain common setter/getter properties which
need to map to the same table called User.

Again, if I need to specify for each form bean (RegisterForm, LogonForm) a
separate class descriptor with it's own, SAME, fields, it would just suck a
bit.

Hope this time I come roght. :)

I really appreciate your help.
--Alen



----- Original Message -----
From: "Thomas Mahler" <[EMAIL PROTECTED]>
To: "OJB Users List" <[EMAIL PROTECTED]>
Sent: Tuesday, June 03, 2003 11:43 AM
Subject: Re: Extent. How to?



Hi again Alen.

I think you should define the extent the other way round.
That is: RegisterForm is the abstract base class and User is the
concrete class defining all the persistent attributes.

   <class-descriptor class="za.co.alen.struts.RegisterForm">
      <extent-class class-ref="za.co.alen.jfaq.User" />
   </class-descriptor>

   <class-descriptor
     class="za.co.alen.jfaq.User"
     table="User"
   >
     <!-- field mappings -->
     ...
   </class-descriptor>

cheers,
Thomas

Alen Ribic wrote:

Thanks Raymond for your reply.

This is the thing. I am very lost.
The User class descriptor in repository contains all my filed mappings

to my


User table in db.
Now za.co.alen.struts.RegisterForm class mapping is a very good

question.


What would the za.co.alen.struts.RegisterForm class mapping contain? I

don't


need any RegisterForm class specific fields at all.
I just need to indicate to OJB that it needs to something like cast
RegisterForm instance to User and hence would need to map that to User

class


/ table mapping. (Remember that the instance I get is of
za.co.alen.struts.RegisterForm)
RegisterForm class does not have any real meaning for persistence

besides


the inherited fields from User bean.
It basically just contains overridden validate(...) method used for
server-side validation in my struts components.

I hope this is making sense. :-)

--Alen



----- Original Message -----
From: "Raymond Barlow" <[EMAIL PROTECTED]>
To: "OJB Users List" <[EMAIL PROTECTED]>
Sent: Tuesday, June 03, 2003 10:45 AM
Subject: Re: Extent. How to?




Hi Alen

I hate to ask the obvious, but you never know :)
Have you created a mapping for za.co.alen.struts.RegisterForm in your
repository_user.xml file??

Regards,
Raymond Barlow

Alen Ribic wrote:



Hi again

I have sent an email already and got a good reply, but now I have an

issue



with mapping side.

I have got classes as follows:

// JavaBean
public class User extends ValidatorForm {}

// Struts form bean
public class RegisterForm extends User {}

Now I just need OJB to recognize RegisteForm class as a User.

usr = request.getAttribute("registerForm"); // returns RegisteForm

instance



broker.store(usr);

So now, OJB on store(...) should look at mapping for User class to User
table.

<class-descriptor
   class="za.co.alen.jfaq.User"
   table="User"
>
   <extent-class class-ref="za.co.alen.struts.RegisterForm" />
   <!-- field mappings -->
   ...
</class-descriptor>

I presume that now I need a <class-descriptor/> for the RegisterForm

class.



Is this correct?
I looked at the Article example but I just can't get my one to work.

My app still says that OJB cannot recognize RegisterForm class in
repository.

What am I doing wrong and how can I go about doing this correctly.

Thanks

--Alen



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to