The intact template-generated source code was:

Component.java:
"
package domainapp.dom.PPB;

import javax.jdo.annotations.Column;
import javax.jdo.annotations.DatastoreIdentity;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Queries;
import javax.jdo.annotations.Query;
import javax.jdo.annotations.Unique;
import javax.jdo.annotations.Version;
import javax.jdo.annotations.VersionStrategy;

import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.Editing;
import org.apache.isis.applib.annotation.Property;

import lombok.Getter;
import lombok.Setter;

@PersistenceCapable(
        identityType = IdentityType.DATASTORE,
        schema = "PPB",
        table = "Component"
)
@DatastoreIdentity(
        strategy = IdGeneratorStrategy.IDENTITY,
        column = "id")
@Version(
        strategy = VersionStrategy.VERSION_NUMBER,
        column = "version")
@Queries({
        @Query(
                name = "find", language = "JDOQL",
                value = "SELECT "
                        + "FROM domainapp.dom.PPB.Component "),
        @Query(
                name = "findByDescriptionContains", language = "JDOQL",
                value = "SELECT "
                        + "FROM domainapp.dom.PPB.Component "
                        + "WHERE Description.indexOf(:Description) >= 0 "),
        @Query(
                name = "findByDescription", language = "JDOQL",
                value = "SELECT "
                        + "FROM domainapp.dom.PPB.Component "
                        + "WHERE Description == :Description ")
})
@Unique(name = "Component_Description_UNQ", members = { "Description" })
@DomainObject(
        editing = Editing.DISABLED
)
@DomainObjectLayout(
        bookmarking = BookmarkPolicy.AS_ROOT
)
public class Component implements Comparable<Component> {

    @Column(allowsNull = "false")
    @Property()
    @Getter @Setter
    private String Description;

    //region > compareTo, toString
    @Override
    public int compareTo(final Component other) {
        return org.apache.isis.applib.util.ObjectContracts.compare(this,
other, "Description");
    }

    @Override
    public String toString() {
        return org.apache.isis.applib.util.ObjectContracts.toString(this,
"Description");
    }
    //endregion

}
"

ComponentMenu.java:
"
package domainapp.dom.PPB;

import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.DomainServiceLayout;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.annotation.RestrictTo;
import org.apache.isis.applib.annotation.SemanticsOf;

@DomainService(
        nature = NatureOfService.VIEW_MENU_ONLY
)
@DomainServiceLayout(
        named = "Components",
        menuOrder = "210"
)
public class ComponentMenu {

    @Action(
            semantics = SemanticsOf.SAFE,
            restrictTo = RestrictTo.PROTOTYPING
    )
    @ActionLayout(
            bookmarking = BookmarkPolicy.AS_ROOT
    )
    @MemberOrder(sequence = "1")
    public java.util.List<Component> listAll() {
        return componentrepository.listAll();
    }

    @Action(
            semantics = SemanticsOf.SAFE
    )
    @ActionLayout(
            bookmarking = BookmarkPolicy.AS_ROOT
    )
    @MemberOrder(sequence = "2")
    public java.util.List<Component> findByDescription(
            final String Description
    ) {
        return componentrepository.findByDescriptionContains(Description);
    }

    @Action(
    )
    @MemberOrder(sequence = "3")
    public Component create(
            final String Description) {
        return componentrepository.create(Description);
    }

    @javax.inject.Inject
    ComponentRepository componentrepository;
}
"

ComponentRepository.java:
"
package domainapp.dom.PPB;

import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.annotation.Programmatic;

@DomainService(
        nature = NatureOfService.DOMAIN,
        repositoryFor = Component.class
)
public class ComponentRepository {

    @Programmatic
    public java.util.List<Component> listAll() {
        return container.allInstances(Component.class);
    }

    @Programmatic
    public Component findByDescription(
            final String Description
    ) {
        return container.uniqueMatch(
                new org.apache.isis.applib.query.QueryDefault<>(
                        Component.class,
                        "findByDescription",
                        "Description", Description));
    }

    @Programmatic
    public java.util.List<Component> findByDescriptionContains(
            final String Description
    ) {
        return container.allMatches(
                new org.apache.isis.applib.query.QueryDefault<>(
                        Component.class,
                        "findByDescriptionContains",
                        "Description", Description));
    }

    @Programmatic
    public Component create(final String Description) {
        final Component component =
container.newTransientInstance(Component.class);
        component.setDescription(Description);
        container.persistIfNotAlready(component);
        return component;
    }

    @Programmatic
    public Component findOrCreate(
            final String Description
    ) {
        Component component = findByDescription(Description);
        if (component == null) {
            component = create(Description);
        }
        return component;
    }

    @javax.inject.Inject
    org.apache.isis.applib.DomainObjectContainer container;
}
"


---------- Forwarded message ----------
From: L Eder <[email protected]>
Date: Tue, 14 Feb 2017 10:00:48 -0400
Subject: Error "The application failed to start due to a number of
metamodel validation errors..."
To: [email protected]

Hello isis users:

I tried to create my first domain object, called Component, using the
file templates.

I created a package under the dom module, and created the files
Component. java, ComponentMenu.java, and ComponentRepository.java.

I then ran the project, without build errors.

However, opening the browser at http://localhost:8080/wicket/ i got this:

Error “The application failed to start due to a number of metamodel
validation errors. domainapp.dom.PPB.Component#description:
incompatible default handling of required/optional properties between
Isis and JDO; add @javax.jdo.annotations.Column(allowsNull="...")”

Source: web browser

Any help is appreciated, thanks

Reply via email to