[jboss-user] [JBoss Seam] - seam-gen code for many-to-one associations and reference dat

lawrieg do-not-reply at jboss.com
Wed Feb 14 11:32:08 EST 2007


Hi,

I'm trying to understand the seam-generated code for many-to-one associations, and whether / how I need to modify it if I'm dealing with reference data that either is read-only (i.e. will be an Enum and will have matching database lookup table), or modified only very occasionally by an administrator (will be a class mapped to a database lookup/reference table).

seam-gen generates the following Seam Application Framework EntityHome code for my example project's Customer class: 

@Name("customerHome")
  | public class CustomerHome extends EntityHome<Customer> {
  | 
  | 	@In(value = "#{statusHome.managedInstance}", required = false)
  | 	Status status;
  | 
  | 	@In(value = "#{customerTypeHome.managedInstance}", required = false)
  | 	CustomerType customerType;
  | 
  | 	public void setCustomerId(Integer id) {
  | 		setId(id);
  | 	}
  | 
  | 	public Integer getCustomerId() {
  | 		return (Integer) getId();
  | 	}
  | 
  | 	@Override
  | 	protected Customer createInstance() {
  | 		Customer customer = new Customer();
  | 		return customer;
  | 	}
  | 
  | 	public void wire() {
  | 		if (status != null) {
  | 			getInstance().setStatus(status);
  | 		}
  | 		if (customerType != null) {
  | 			getInstance().setCustomerType(customerType);
  | 		}
  | 	}
  | 
  | 	public boolean isWired() {
  | 		if (getInstance().getStatus() == null)
  | 			return false;
  | 		if (getInstance().getCustomerType() == null)
  | 			return false;
  | 		return true;
  | 	}
  | 
  | 	public Customer getManagedInstance() {
  | 		return isManaged() ? getInstance() : null;
  | 	}
  | 
  | }

and CustomerEdit.page.xml is generated as follows

<page no-conversation-view-id="/CustomerList.xhtml">
  | 
  |    <restrict>#{identity.loggedIn}</restrict>
  | 
  |    <begin-conversation join="true"/>
  | 
  |    <action execute="#{customerHome.wire}"/>
  | 
  |    <param name="customerFrom"/>
  |    <param name="customerId" value="#{customerHome.customerId}"/>
  | 
  |    <param name="statusFrom"/>
  |    <param name="statusId" value="#{statusHome.statusId}"/>
  | 
  |    <param name="customerTypeFrom"/>
  |    <param name="customerTypeId" value="#{customerTypeHome.customerTypeId}"/>
  | 
  |    <navigation from-action="#{customerHome.persist}">
  |        <end-conversation/>
  |        <redirect view-id="/Customer.xhtml"/>
  |    </navigation>
  | 
  |    <navigation from-action="#{customerHome.update}">
  |        <end-conversation/>
  |        <redirect view-id="/Customer.xhtml"/>
  |    </navigation>
  | 
  |    <navigation from-action="#{customerHome.remove}">
  |        <end-conversation/>
  |        <redirect view-id="/CustomerList.xhtml"/>
  |    </navigation>
  | 
  | </page>


So if I want Status to be an Enum, and CustomerType to be an immutable class that will be mapped to a database lookup/reference table, then what changes should I make to the seam-gen code???

I particular, I'm confused by the need for the wire() and isWired() methods - can anyone shed any light on what they are for and whether I'll still need them?

Thanks,

Lawrie

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4016451#4016451

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4016451



More information about the jboss-user mailing list