hi all,
 i am using xd2 mvn2 plugin to generate xdoclet files... but it looks like
it is falling short when i am using associations..

here is the class that is failing...
code:

package com.mm.backend.model;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * @hibernate.class table="ENTRYTYPES"
 * @hibernate.discriminator column="discriminator"
 *
 */


public class AbstractEntryType  {
    protected String description;
    protected Long id;
    protected String discriminator;
    protected Integer version;
    protected List entries =
                            new ArrayList();


    /**
     * @hibernate.property
     * @return entry type description
     */
    public String getDescription() {
        // TODO Auto-generated method stub
        return description;
    }

    /**
     * @hibernate.property column="discriminator"
     *     insert="false"
     *     update="false"
     */
    public String getDiscriminator() {
        return discriminator;
    }

    /**
     * @hibernate.id column="id"
     *                 generator-class="increment"
     *                 unsaved-value="-1"
     */
    public Long getId() {
        // TODO Auto-generated method stub
        return id;
    }


    /**
     * @hibernate.version
     *                 unsaved-value="null"
     * @return
     */
    public Integer getVersion() {
        return version;
    }


    public void setDescription(String description) {
        // TODO Auto-generated method stub
        this.description = description;
    }


    public void setDiscriminator(String discriminator) {
        this.discriminator = discriminator;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void setVersion(Integer version) {
        this.version = version;
    }

    /**
     * @hibernate.list cascade="save-update"
     * @hibernate.collection-one-to-many class="
com.mm.backend.model.AbstractBudgetEntry"
     * @hibernate.collection-key column="FK_ENTRY_ID"
     * @return
     */
    public List getEntries() {
        return entries;
    }

    public void setEntries(List entries) {
        this.entries = entries;
    }


    /** common methods ***/
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof AbstractEntryType)) return false;

        final AbstractEntryType item = (AbstractEntryType) o;

        if (! (id == item.getId()) ) return false;

        return true;
    }

    public int hashCode() {
        int result;
        result = 29 * description.hashCode() + id.intValue() +
                    version.hashCode();
        return result;
    }

    public String toString() {
        return  "id ('" + getId() + "'), " +
                "Desc: '" + getDescription();
    }

    public int compareTo(Object o) {
        if (o instanceof AbstractEntryType) {
            // Don't compare Date objects! Use the time in milliseconds!
            return String.valueOf(id).compareTo(
                        String.valueOf(
                                ((AbstractEntryType)o).getId()));
        }
        return 0;
    }


}


and here's the hbm.xml file that gets generated

<hibernate-mapping>
−
    <class table="ENTRYTYPES" name="com.mm.backend.model.AbstractEntryType">
−
    <id unsaved-value="-1" name="id" column="id">
<generator class="increment"/>
</id>
<discriminator column="discriminator"/>
<version unsaved-value="null" name="version"/>
<property name="description"/>
<property name="discriminator" column="discriminator" update="false"
insert="false"/>
−
    <list cascade="save-update" name="entries">
<key/>
</list>
<subclass name="com.mm.backend.model.ExpenseType"
discriminator-value="Expense"/>
<subclass name="com.mm.backend.model.SavingsType"
discriminator-value="Savings"/>
</class>
</hibernate-mapping>

somehow the key is not getting populated... so in the output i got this :

[INFO] XDoclet plugin failed:
   Line: 15 Column: 12
   Message: The content of element type "list" is incomplete, it must match
"(me
ta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-
to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-upda
te?,sql-delete?,sql-delete-all?,filter*)".

[INFO]
------------------------------------------------------------------------
[DEBUG] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: XDoclet plugin
failed:
   Line: 15 Column: 12
   Message: The content of element type "list" is incomplete, it must match
"(me
ta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-
to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-upda
te?,sql-delete?,sql-delete-all?,filter*)".
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:564)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(
DefaultLifecycleExecutor.java:480)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
ltLifecycleExecutor.java:459)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(
DefaultLifecycleExecutor.java:311)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen ts(
DefaultLifecycleExecutor.java:278)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
fecycleExecutor.java:143)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:272)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java
:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java
:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: XDoclet plugin
failed :
   Line: 15 Column: 12
   Message: The content of element type "list" is incomplete, it must match
"(me
ta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-
to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-upda
te?,sql-delete?,sql-delete-all?,filter*)".
        at org.codehaus.xdoclet.XDocletMojo.execute(XDocletMojo.java:158)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
nManager.java:443)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:539)
        ... 16 more
Caused by: org.generama.OutputValidationError:
   Line: 15 Column: 12
   Message: The content of element type "list" is incomplete, it must match
"(me
ta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-
to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-upda
te?,sql-delete?,sql-delete-all?,filter*)".
        at org.generama.defaults.XMLOutputValidator.validate(XMLOutputValidator.
java:97)
        at org.generama.Plugin.start(Plugin.java:260)
        at org.picocontainer.defaults.DefaultPicoContainer.start(DefaultPicoCont
ainer.java:349)
        at
org.nanocontainer.integrationkit.LifecycleContainerBuilder.autoStart(
LifecycleContainerBuilder.java:52)
        at
org.nanocontainer.integrationkit.LifecycleContainerBuilder.buildConta iner(
LifecycleContainerBuilder.java:45)
        at org.codehaus.xdoclet.XDocletMojo.execute(XDocletMojo.java:149)
        ... 18 more
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 10 seco

could anyone help?

thanks and regards
  marco

Reply via email to