Hi Andrew Stevens,

    Thanks for your help first.

    It's *only* Value Object's file that don't generate, other's , like local/remote home/interfce generate correctly.

Andrew Stevens wrote:
Do any other files get generated? i.e. is it *only* the VOs that don't
work?  Are the other correct and as you expect them?
  
Enclose my bean file fore ref.
As you see, i already include @ebj.persistence tag...  and fields...
No @ejb.persistence tag?  Given how many times
<XDtEjbPersistent:forAllPersistentFields ...> appears in the
valueobject.xdt template, I'm not surprised you're having problems :-)
Having said that, I'm still surprised if it generates nothing - I'd have
thought it more like you'd get a VO containing no fields.  Your
class-level javadoc comment is in the right place, isn't it? (i.e.
immediately before the class declaration)
  
----->8----- my bean file-----
..
...
/*
 * @ejb.bean
 *     name="attendance/Record"
 *     display-name="Attendance Record Entity"
 *     type="CMP"
 *     jndi-name="ejb/attendance/Record"
 *     local-jndi-name="ejb/attendance/LocalRecord"
 *     primkey-field="id"
 *
 * @ejb.transaction
 *     type="Required"
 *
 * @ejb:env-entry name="SequenceName"
 *                value="RecordID"
 *
 * @ejb:ejb-ref ejb-name="attendance/RecordID/SequenceGenerator"
 *
 * @ejb.interface
 *     remote-class="com.webgforce.attendance.ejb.interfaces.Record"
 *
 * @ejb.value-object
 *     name="Record"
 *     match="*"
 *
 * @ejb.value-object
 *   name="RecordAutoMachine"
 *   match="AutoMachine"
 *
 * @ejb:data-object extends="com.webgforce.ejb.interfaces.AbstractData"
 *                  setdata="false"
 *
 * @ejb.finder
 *     signature="java.util.Collection findAll()"
 *     unchecked="true"
 *
 * @ejb.persistence
 *     table-name="AttRecord"
 * 
 * @jboss:table-name table-name="AttRecord"
 *
 * @jboss:create-table create="true"
 *
 * @jboss:remove-table remove="true"
 *
 * @jboss.ejb-ref-jndi
 *    jndi-name="ejb/attendance/Record"
 *    ref-name="attendance/Record"
 */

abstract class RecordBean extends BaseEntityBean implements EntityBean {
    /**
     * Id of this Record. This is not remote since the primary key can be extracted by other means.
     *
     * @ejb.pk-field
     * @ejb.persistent-field
     * @ejb.interface-method
     * @ejb.persistence column-name="id"
     *
     * @jboss.auto-increment
     */
    public abstract Integer getId();
    public abstract void setId(Integer id);
....
..
....
   
    /**
     * @ejb.interface-method
     *    view-type="both"
     */
    public abstract RecordValue getRecordValue();

    /**
     * @ejb.interface-method
     *    view-type="both"
     */
    public abstract void setRecordValue(RecordValue value);

   
    /**
     * Create Record.
     *
     * @ejb.create-method
     */
    public RecordPK ejbCreate(RecordValue value)
            throws CreateException {
        setId(value.getId());
        setRecordValue(value);

        return null;
    }
....
..
------>8----------------------
If there's other stuff being generated, that suggests your fileset is
okay; next most likely reason no VOs would be generated for the class is
it doesn't "see" the ejb.value-object class-level tag.  But if that's
the case I wouldn't expect it to see your @ejb.ejb-ref tag either and
the relevant element would be missing from the DD.


Andrew.

My source fileset should be ok, that why it could generate other kind of files (interface, home...etc.). And my xdoclet classes ref, should be reference all libs that come with xdoclet-bin-1.2b2\lib.

Anyway, i think it must missing some tag in my bean file.... just that i don't fully understand. Please Help, thanks.

Gordon


package attendance.ejb;

import attendance.interfaces.Record;
import attendance.interfaces.RecordData;
import attendance.interfaces.RecordPK;
import attendance.interfaces.RecordValue;

import javax.ejb.CreateException;
import javax.ejb.EntityBean;
import ejb.BaseEntityBean;


/*
 * @ejb.bean
 *     name="attendance/Record"
 *     display-name="Attendance Record Entity"
 *     type="CMP"
 *     jndi-name="ejb/attendance/Record"
 *     local-jndi-name="ejb/attendance/LocalRecord"
 *     primkey-field="id"
 *
 * @ejb.transaction
 *     type="Required"
 *
 * @ejb:env-entry name="SequenceName"
 *                value="RecordID"
 *
 * @ejb:ejb-ref ejb-name="attendance/RecordID/SequenceGenerator"
 * 
 * @ejb.interface
 *     remote-class="attendance.ejb.interfaces.Record"
 * 
 * @ejb.value-object
 *     name="Record"
 *     match="*"
 * 
 * @ejb.value-object
 *   name="RecordAutoMachine"
 *   match="AutoMachine"
 *
 * @ejb:data-object extends="ejb.interfaces.AbstractData"
 *                  setdata="false"
 *
 * @ejb.finder
 *     signature="java.util.Collection findAll()"
 *     unchecked="true"
 * 
 * @ejb.persistence
 *     table-name="AttRecord"
 *  
 * @jboss:table-name table-name="AttRecord"
 *
 * @jboss:create-table create="true"
 *
 * @jboss:remove-table remove="true"
 * 
 * @jboss.ejb-ref-jndi
 *    jndi-name="ejb/attendance/Record"
 *    ref-name="attendance/Record"
 */

abstract class RecordBean extends BaseEntityBean implements EntityBean {
        /**
         * Id of this Record. This is not remote since the primary key can be 
extracted by other means.
         *
         * @ejb.pk-field
         * @ejb.persistent-field
         * @ejb.interface-method
         * @ejb.persistence column-name="id"
         *
         * @jboss.auto-increment
         */
        public abstract Integer getId();
        public abstract void setId(Integer id);
        
        /**
         * Balance of the account.
         *
         * @ejb.interface-method
         * @ejb.persistence column-name="MachineID"
         * @jboss.sql-type VARCHAR
         * @jboss.jdbc-type java.lang.String
         *
         */
        public abstract String getMachineID();
        public abstract void setMachineID(String MachineID);
        
        /**
         * @ejb.interface-method
         *    view-type="both"
         */
        public abstract AutoMachineValue getAutoMachineValue(); 
        
        /**
         * @ejb.interface-method
         *    view-type="both"
         */
        public abstract RecordValue getRecordValue();

        /**
         * @ejb.interface-method
         *    view-type="both"
         */
        public abstract void setRecordValue(RecordValue value);

        
        /**
         * Create Record.
         *
         * @ejb.create-method
         */
        public RecordPK ejbCreate(RecordValue value)
                        throws CreateException {
                setId(value.getId());
                setRecordValue(value);

                return null;
        }

        /**
         * Create Record.
         */
        public void ejbPostCreate(RecordValue value)
                        throws CreateException {
        }
}

Reply via email to