You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@isis.apache.org by Stephen Cameron <st...@gmail.com> on 2015/07/09 05:32:17 UTC

java.lang.IllegalArgumentException: out of field index :15

Hi,

I have a DataNucleus error, with a not very informative message!



Caused by: java.lang.IllegalArgumentException: out of field index :15
    at
au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyField(SocialFactors.java)
    at
au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyFields(SocialFactors.java)
    at
org.datanucleus.state.JDOStateManager.saveFields(JDOStateManager.java:694)
    at
org.datanucleus.state.JDOStateManager.initialiseForPersistentNew(JDOStateManager.java:437)



Class is presently:

package au.com.scds.chats.dom.modules.participant;

import javax.jdo.annotations.Column;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.VersionStrategy;

import org.apache.isis.applib.DomainObjectContainer;
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.MemberOrder;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.value.Date;

@javax.jdo.annotations.PersistenceCapable(identityType =
IdentityType.DATASTORE)
@javax.jdo.annotations.DatastoreIdentity(strategy =
javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column = "id")
@javax.jdo.annotations.Version(strategy = VersionStrategy.VERSION_NUMBER,
column = "version")
@DomainObject(objectType = "SOCIAL-FACTORS")
@DomainObjectLayout(bookmarking = BookmarkPolicy.AS_ROOT)
public class SocialFactors {

    public String title() {
        return "Social Factors of Participant: " + parent.getFullname();
    }

    // {{ ParentParticipant (property)
    private Participant parent;

    @Column(allowsNull = "false")
    @Property(hidden = Where.EVERYWHERE)
    public Participant getParentParticipant() {
        return parent;
    }

    public void setParentParticipant(final Participant parent) {
        if (this.parent == null && parent != null)
            this.parent = parent;
    }

    // }}

    // {{ LimitingHealthIssues (property)
    private String limitingHealthIssues;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "1")
    public String getLimitingHealthIssues() {
        return limitingHealthIssues;
    }

    public void setLimitingHealthIssues(final String limitingHealthIssues) {
        this.limitingHealthIssues = limitingHealthIssues;
    }

    // }}

    // {{ OtherLimitingFactors (property)
    private String otherLimitingFactors;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "2")
    public String getOtherLimitingFactors() {
        return otherLimitingFactors;
    }

    public void setOtherLimitingFactors(final String otherLimitingFactors) {
        this.otherLimitingFactors = otherLimitingFactors;
    }

    // }}

    // {{ DriversLicence (property)
    private String driversLicence;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "3")
    public String getDriversLicence() {
        return driversLicence;
    }

    public void setDriversLicence(final String driversLicence) {
        this.driversLicence = driversLicence;
    }

    // }}

    // {{ DrivingAbility (property)
    private String drivingAbility;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "4")
    public String getDrivingAbility() {
        return drivingAbility;
    }

    public void setDrivingAbility(final String drivingAbility) {
        this.drivingAbility = drivingAbility;
    }

    // }}

    // {{ DrivingConfidence (property)
    private String drivingConfidence;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "5")
    public String getDrivingConfidence() {
        return drivingConfidence;
    }

    public void setDrivingConfidence(final String drivingConfidence) {
        this.drivingConfidence = drivingConfidence;
    }

    // }}

    // {{ PlaceOfOrigin (property)
    private String placeOfOrigin;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "6")
    public String getPlaceOfOrigin() {
        return placeOfOrigin;
    }

    public void setPlaceOfOrigin(final String placeOfOrigin) {
        this.placeOfOrigin = placeOfOrigin;
    }

    // }}

    // {{ DateofSettlement (property)
    private Date dateOfSettlement;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "7")
    public Date getDateofSettlement() {
        return dateOfSettlement;
    }

    public void setDateofSettlement(final Date dateOfSettlement) {
        this.dateOfSettlement = dateOfSettlement;
    }

    // }}

    // {{ closeRelatives (property)
    private String closeRelatives;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "8")
    public String getCloseRelatives() {
        return closeRelatives;
    }

    public void setCloseRelatives(final String closeRelatives) {
        this.closeRelatives = closeRelatives;
    }

    // }}

    // {{ closeRelativeAndFriendCount (property)
    private Integer closeRelativeAndFriendCount;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "9")
    public Integer getCloseRelativeAndFriendCount() {
        return closeRelativeAndFriendCount;
    }

    public void setCloseRelativeAndFriendCount(
            final Integer closeRelativeAndFriendCount) {
        this.closeRelativeAndFriendCount = closeRelativeAndFriendCount;
    }

    // }}

    // {{ ProximityOfRelatives (property)
    private String proximityOfRelatives;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "10")
    public String getProximityOfRelatives() {
        return proximityOfRelatives;
    }

    public void setProximityOfRelatives(final String proximityOfRelatives) {
        this.proximityOfRelatives = proximityOfRelatives;
    }

    // }}

    // {{ ProximityOfFriends (property)
    private String proximityOfFriends;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "11")
    public String getProximityOfFriends() {
        return proximityOfFriends;
    }

    @Column(allowsNull = "true")
    public void setProximityOfFriends(final String proximityOfFriends) {
        this.proximityOfFriends = proximityOfFriends;
    }

    // }}

    // {{ InvolvementInGroupsClubs (property)
    private String involvementInGroupsClubs;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "12")
    public String getInvolvementInGroupsClubs() {
        return involvementInGroupsClubs;
    }

    public void setInvolvementInGroupsClubs(final String involvement) {
        this.involvementInGroupsClubs = involvement;
    }

    // }}

    // {{ involvementInInterestsHobbies (property)
    private String involvementInInterestsHobbies;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "13")
    public String getInvolvementInInterestsHobbies() {
        return involvementInInterestsHobbies;
    }

    public void setInvolvementInInterestsHobbies(
            final String involvmentInInterestsHobbies) {
        this.involvementInInterestsHobbies = involvmentInInterestsHobbies;
    } // }}

    // {{ injected dependencies
    @javax.inject.Inject
    @SuppressWarnings("unused")
    private DomainObjectContainer container;
    // }}

}

Fwd: java.lang.IllegalArgumentException: out of field index :15

Posted by Stephen Cameron <st...@gmail.com>.
The DataNucleus Enhancement has been successful, the error message occurs
when a user action causes a new SocialFactors object to be initialised.


---------- Forwarded message ----------
From: Stephen Cameron <st...@gmail.com>
Date: Thu, Jul 9, 2015 at 1:32 PM
Subject: java.lang.IllegalArgumentException: out of field index :15
To: users@isis.apache.org


Hi,

I have a DataNucleus error, with a not very informative message!



Caused by: java.lang.IllegalArgumentException: out of field index :15
    at
au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyField(SocialFactors.java)
    at
au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyFields(SocialFactors.java)
    at
org.datanucleus.state.JDOStateManager.saveFields(JDOStateManager.java:694)
    at
org.datanucleus.state.JDOStateManager.initialiseForPersistentNew(JDOStateManager.java:437)



Class is presently:

package au.com.scds.chats.dom.modules.participant;

import javax.jdo.annotations.Column;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.VersionStrategy;

import org.apache.isis.applib.DomainObjectContainer;
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.MemberOrder;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.value.Date;

@javax.jdo.annotations.PersistenceCapable(identityType =
IdentityType.DATASTORE)
@javax.jdo.annotations.DatastoreIdentity(strategy =
javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column = "id")
@javax.jdo.annotations.Version(strategy = VersionStrategy.VERSION_NUMBER,
column = "version")
@DomainObject(objectType = "SOCIAL-FACTORS")
@DomainObjectLayout(bookmarking = BookmarkPolicy.AS_ROOT)
public class SocialFactors {

    public String title() {
        return "Social Factors of Participant: " + parent.getFullname();
    }

    // {{ ParentParticipant (property)
    private Participant parent;

    @Column(allowsNull = "false")
    @Property(hidden = Where.EVERYWHERE)
    public Participant getParentParticipant() {
        return parent;
    }

    public void setParentParticipant(final Participant parent) {
        if (this.parent == null && parent != null)
            this.parent = parent;
    }

    // }}

    // {{ LimitingHealthIssues (property)
    private String limitingHealthIssues;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "1")
    public String getLimitingHealthIssues() {
        return limitingHealthIssues;
    }

    public void setLimitingHealthIssues(final String limitingHealthIssues) {
        this.limitingHealthIssues = limitingHealthIssues;
    }

    // }}

    // {{ OtherLimitingFactors (property)
    private String otherLimitingFactors;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "2")
    public String getOtherLimitingFactors() {
        return otherLimitingFactors;
    }

    public void setOtherLimitingFactors(final String otherLimitingFactors) {
        this.otherLimitingFactors = otherLimitingFactors;
    }

    // }}

    // {{ DriversLicence (property)
    private String driversLicence;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "3")
    public String getDriversLicence() {
        return driversLicence;
    }

    public void setDriversLicence(final String driversLicence) {
        this.driversLicence = driversLicence;
    }

    // }}

    // {{ DrivingAbility (property)
    private String drivingAbility;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "4")
    public String getDrivingAbility() {
        return drivingAbility;
    }

    public void setDrivingAbility(final String drivingAbility) {
        this.drivingAbility = drivingAbility;
    }

    // }}

    // {{ DrivingConfidence (property)
    private String drivingConfidence;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "5")
    public String getDrivingConfidence() {
        return drivingConfidence;
    }

    public void setDrivingConfidence(final String drivingConfidence) {
        this.drivingConfidence = drivingConfidence;
    }

    // }}

    // {{ PlaceOfOrigin (property)
    private String placeOfOrigin;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "6")
    public String getPlaceOfOrigin() {
        return placeOfOrigin;
    }

    public void setPlaceOfOrigin(final String placeOfOrigin) {
        this.placeOfOrigin = placeOfOrigin;
    }

    // }}

    // {{ DateofSettlement (property)
    private Date dateOfSettlement;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "7")
    public Date getDateofSettlement() {
        return dateOfSettlement;
    }

    public void setDateofSettlement(final Date dateOfSettlement) {
        this.dateOfSettlement = dateOfSettlement;
    }

    // }}

    // {{ closeRelatives (property)
    private String closeRelatives;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "8")
    public String getCloseRelatives() {
        return closeRelatives;
    }

    public void setCloseRelatives(final String closeRelatives) {
        this.closeRelatives = closeRelatives;
    }

    // }}

    // {{ closeRelativeAndFriendCount (property)
    private Integer closeRelativeAndFriendCount;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "9")
    public Integer getCloseRelativeAndFriendCount() {
        return closeRelativeAndFriendCount;
    }

    public void setCloseRelativeAndFriendCount(
            final Integer closeRelativeAndFriendCount) {
        this.closeRelativeAndFriendCount = closeRelativeAndFriendCount;
    }

    // }}

    // {{ ProximityOfRelatives (property)
    private String proximityOfRelatives;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "10")
    public String getProximityOfRelatives() {
        return proximityOfRelatives;
    }

    public void setProximityOfRelatives(final String proximityOfRelatives) {
        this.proximityOfRelatives = proximityOfRelatives;
    }

    // }}

    // {{ ProximityOfFriends (property)
    private String proximityOfFriends;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "11")
    public String getProximityOfFriends() {
        return proximityOfFriends;
    }

    @Column(allowsNull = "true")
    public void setProximityOfFriends(final String proximityOfFriends) {
        this.proximityOfFriends = proximityOfFriends;
    }

    // }}

    // {{ InvolvementInGroupsClubs (property)
    private String involvementInGroupsClubs;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "12")
    public String getInvolvementInGroupsClubs() {
        return involvementInGroupsClubs;
    }

    public void setInvolvementInGroupsClubs(final String involvement) {
        this.involvementInGroupsClubs = involvement;
    }

    // }}

    // {{ involvementInInterestsHobbies (property)
    private String involvementInInterestsHobbies;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "13")
    public String getInvolvementInInterestsHobbies() {
        return involvementInInterestsHobbies;
    }

    public void setInvolvementInInterestsHobbies(
            final String involvmentInInterestsHobbies) {
        this.involvementInInterestsHobbies = involvmentInInterestsHobbies;
    } // }}

    // {{ injected dependencies
    @javax.inject.Inject
    @SuppressWarnings("unused")
    private DomainObjectContainer container;
    // }}

}

Re: java.lang.IllegalArgumentException: out of field index :15

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
On 9 July 2015 at 08:47, Stephen Cameron <st...@gmail.com> wrote:

> the simple one Date property does have the same problem in Wicket viewer.
>
> I check this into Github:
>
> https://github.com/Stephen-Cameron-Data-Services/isis-chats/blob/master/dom/src/main/java/au/com/scds/chats/dom/modules/participant/DateTest.java
>
>
ok, great.  Well, not great, I guess I need to look into it.  But thanks
for taking the time to isolate a test case for us.




> There is an action in Participant to trigger the error
>
>     @MemberOrder(sequence = "200")
>     @Action(semantics = SemanticsOf.IDEMPOTENT)
>     @ActionLayout(named = "Date Test")
>     public DateTest updateDateTest() {
>         DateTest t = container.newTransientInstance(DateTest.class);
>         this.test = t;
>         container.persist(t);
>         return this.test;
>     }
>
> If I use DateTest class independently of Wicket viewer it works fine, but I
> have not tried to round trip to a database with it. How can I write a JUnit
> test to do that independently of the viewer? I need to start writing such
> tests, so now is a good time to learn.
>
>
>
The simpleapp archetype [1] has the integtest project which shows the
scaffolding.  There's  also a chapter on the topic in our spiffy new users
guide [2]

Cheers
Dan

[1] http://isis.apache.org/simpleapp-archetype.html
[2] http://isis.apache.org/guides/ug.html#_ug_testing




>
>
>
> On Thu, Jul 9, 2015 at 4:45 PM, Stephen Cameron <
> steve.cameron.62@gmail.com>
> wrote:
>
> > changing it to java.util.Date and rebuilding fixes the problem, then
> going
> > back to o.a.i.applib.Date breaks it again.
> >
> > I am using Eclipse too!
> >
> > For interest I'll try a class with just one date field and see what
> > happens.
> >
> > Then I'll try the Joda library instead.
> >
> >
> >
> > On Thu, Jul 9, 2015 at 2:51 PM, Dan Haywood <
> dan@haywood-associates.co.uk>
> > wrote:
> >
> >> I'm not completely sure the issue is from using o.a.i.applib.value.Date
> >> (though in any case you probably should be using one of the Joda date
> >> classes instead).
> >>
> >> Rather, when I've seen this DN issue it's because it has attempted -
> >> through a race condition or for some other hard-to-replicate reason - to
> >> re-enhance an already enhanced class, or at any rate the enhancement is
> >> out-of-whack with the actual fields of the class.
> >>
> >> I've only ever hit this issue when using Eclipse and relying on the DN
> >> plugin's automatic enhancement.  I've never had the issue when using
> >> IntelliJ, or from the command line.
> >>
> >> When the issue went away by you moving away from o.a.i.applib.value.Date
> >> to
> >> something else, it was probably nothing more than the code got
> recompiled
> >> and then re-enhanced correctly.  Try reverting back to
> >> o.a.i.applib.value.Date and it'll probably still work.  (If it doesn't,
> >> then that'll be a useful test case for us to work from!)
> >>
> >> Thx
> >> Dan
> >>
> >>
> >>
> >>
> >>
> >>
> >> On 9 July 2015 at 05:45, Stephen Cameron <st...@gmail.com>
> >> wrote:
> >>
> >> > Reason was me trying to use:
> >> > org.apache.isis.applib.value.Date
> >> >
> >> > ---------- Forwarded message ----------
> >> > From: Stephen Cameron <st...@gmail.com>
> >> > Date: Thu, Jul 9, 2015 at 1:32 PM
> >> > Subject: java.lang.IllegalArgumentException: out of field index :15
> >> > To: users@isis.apache.org
> >> >
> >> >
> >> > Hi,
> >> >
> >> > I have a DataNucleus error, with a not very informative message!
> >> >
> >> >
> >> >
> >> > Caused by: java.lang.IllegalArgumentException: out of field index :15
> >> >     at
> >> >
> >> >
> >>
> au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyField(SocialFactors.java)
> >> >     at
> >> >
> >> >
> >>
> au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyFields(SocialFactors.java)
> >> >     at
> >> >
> >>
> org.datanucleus.state.JDOStateManager.saveFields(JDOStateManager.java:694)
> >> >     at
> >> >
> >> >
> >>
> org.datanucleus.state.JDOStateManager.initialiseForPersistentNew(JDOStateManager.java:437)
> >> >
> >> >
> >> >
> >> > Class is presently:
> >> >
> >> > package au.com.scds.chats.dom.modules.participant;
> >> >
> >> > import javax.jdo.annotations.Column;
> >> > import javax.jdo.annotations.IdentityType;
> >> > import javax.jdo.annotations.VersionStrategy;
> >> >
> >> > import org.apache.isis.applib.DomainObjectContainer;
> >> > 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.MemberOrder;
> >> > import org.apache.isis.applib.annotation.Property;
> >> > import org.apache.isis.applib.annotation.Where;
> >> > import org.apache.isis.applib.value.Date;
> >> >
> >> > @javax.jdo.annotations.PersistenceCapable(identityType =
> >> > IdentityType.DATASTORE)
> >> > @javax.jdo.annotations.DatastoreIdentity(strategy =
> >> > javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column = "id")
> >> > @javax.jdo.annotations.Version(strategy =
> >> VersionStrategy.VERSION_NUMBER,
> >> > column = "version")
> >> > @DomainObject(objectType = "SOCIAL-FACTORS")
> >> > @DomainObjectLayout(bookmarking = BookmarkPolicy.AS_ROOT)
> >> > public class SocialFactors {
> >> >
> >> >     public String title() {
> >> >         return "Social Factors of Participant: " +
> parent.getFullname();
> >> >     }
> >> >
> >> >     // {{ ParentParticipant (property)
> >> >     private Participant parent;
> >> >
> >> >     @Column(allowsNull = "false")
> >> >     @Property(hidden = Where.EVERYWHERE)
> >> >     public Participant getParentParticipant() {
> >> >         return parent;
> >> >     }
> >> >
> >> >     public void setParentParticipant(final Participant parent) {
> >> >         if (this.parent == null && parent != null)
> >> >             this.parent = parent;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ LimitingHealthIssues (property)
> >> >     private String limitingHealthIssues;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "1")
> >> >     public String getLimitingHealthIssues() {
> >> >         return limitingHealthIssues;
> >> >     }
> >> >
> >> >     public void setLimitingHealthIssues(final String
> >> limitingHealthIssues)
> >> > {
> >> >         this.limitingHealthIssues = limitingHealthIssues;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ OtherLimitingFactors (property)
> >> >     private String otherLimitingFactors;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "2")
> >> >     public String getOtherLimitingFactors() {
> >> >         return otherLimitingFactors;
> >> >     }
> >> >
> >> >     public void setOtherLimitingFactors(final String
> >> otherLimitingFactors)
> >> > {
> >> >         this.otherLimitingFactors = otherLimitingFactors;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ DriversLicence (property)
> >> >     private String driversLicence;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "3")
> >> >     public String getDriversLicence() {
> >> >         return driversLicence;
> >> >     }
> >> >
> >> >     public void setDriversLicence(final String driversLicence) {
> >> >         this.driversLicence = driversLicence;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ DrivingAbility (property)
> >> >     private String drivingAbility;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "4")
> >> >     public String getDrivingAbility() {
> >> >         return drivingAbility;
> >> >     }
> >> >
> >> >     public void setDrivingAbility(final String drivingAbility) {
> >> >         this.drivingAbility = drivingAbility;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ DrivingConfidence (property)
> >> >     private String drivingConfidence;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "5")
> >> >     public String getDrivingConfidence() {
> >> >         return drivingConfidence;
> >> >     }
> >> >
> >> >     public void setDrivingConfidence(final String drivingConfidence) {
> >> >         this.drivingConfidence = drivingConfidence;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ PlaceOfOrigin (property)
> >> >     private String placeOfOrigin;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "6")
> >> >     public String getPlaceOfOrigin() {
> >> >         return placeOfOrigin;
> >> >     }
> >> >
> >> >     public void setPlaceOfOrigin(final String placeOfOrigin) {
> >> >         this.placeOfOrigin = placeOfOrigin;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ DateofSettlement (property)
> >> >     private Date dateOfSettlement;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "7")
> >> >     public Date getDateofSettlement() {
> >> >         return dateOfSettlement;
> >> >     }
> >> >
> >> >     public void setDateofSettlement(final Date dateOfSettlement) {
> >> >         this.dateOfSettlement = dateOfSettlement;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ closeRelatives (property)
> >> >     private String closeRelatives;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "8")
> >> >     public String getCloseRelatives() {
> >> >         return closeRelatives;
> >> >     }
> >> >
> >> >     public void setCloseRelatives(final String closeRelatives) {
> >> >         this.closeRelatives = closeRelatives;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ closeRelativeAndFriendCount (property)
> >> >     private Integer closeRelativeAndFriendCount;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "9")
> >> >     public Integer getCloseRelativeAndFriendCount() {
> >> >         return closeRelativeAndFriendCount;
> >> >     }
> >> >
> >> >     public void setCloseRelativeAndFriendCount(
> >> >             final Integer closeRelativeAndFriendCount) {
> >> >         this.closeRelativeAndFriendCount =
> closeRelativeAndFriendCount;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ ProximityOfRelatives (property)
> >> >     private String proximityOfRelatives;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "10")
> >> >     public String getProximityOfRelatives() {
> >> >         return proximityOfRelatives;
> >> >     }
> >> >
> >> >     public void setProximityOfRelatives(final String
> >> proximityOfRelatives)
> >> > {
> >> >         this.proximityOfRelatives = proximityOfRelatives;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ ProximityOfFriends (property)
> >> >     private String proximityOfFriends;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "11")
> >> >     public String getProximityOfFriends() {
> >> >         return proximityOfFriends;
> >> >     }
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     public void setProximityOfFriends(final String
> proximityOfFriends) {
> >> >         this.proximityOfFriends = proximityOfFriends;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ InvolvementInGroupsClubs (property)
> >> >     private String involvementInGroupsClubs;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "12")
> >> >     public String getInvolvementInGroupsClubs() {
> >> >         return involvementInGroupsClubs;
> >> >     }
> >> >
> >> >     public void setInvolvementInGroupsClubs(final String involvement)
> {
> >> >         this.involvementInGroupsClubs = involvement;
> >> >     }
> >> >
> >> >     // }}
> >> >
> >> >     // {{ involvementInInterestsHobbies (property)
> >> >     private String involvementInInterestsHobbies;
> >> >
> >> >     @Column(allowsNull = "true")
> >> >     @MemberOrder(sequence = "13")
> >> >     public String getInvolvementInInterestsHobbies() {
> >> >         return involvementInInterestsHobbies;
> >> >     }
> >> >
> >> >     public void setInvolvementInInterestsHobbies(
> >> >             final String involvmentInInterestsHobbies) {
> >> >         this.involvementInInterestsHobbies =
> >> involvmentInInterestsHobbies;
> >> >     } // }}
> >> >
> >> >     // {{ injected dependencies
> >> >     @javax.inject.Inject
> >> >     @SuppressWarnings("unused")
> >> >     private DomainObjectContainer container;
> >> >     // }}
> >> >
> >> > }
> >> >
> >>
> >
> >
>

Re: java.lang.IllegalArgumentException: out of field index :15

Posted by Stephen Cameron <st...@gmail.com>.
the simple one Date property does have the same problem in Wicket viewer.

I check this into Github:
https://github.com/Stephen-Cameron-Data-Services/isis-chats/blob/master/dom/src/main/java/au/com/scds/chats/dom/modules/participant/DateTest.java

There is an action in Participant to trigger the error

    @MemberOrder(sequence = "200")
    @Action(semantics = SemanticsOf.IDEMPOTENT)
    @ActionLayout(named = "Date Test")
    public DateTest updateDateTest() {
        DateTest t = container.newTransientInstance(DateTest.class);
        this.test = t;
        container.persist(t);
        return this.test;
    }

If I use DateTest class independently of Wicket viewer it works fine, but I
have not tried to round trip to a database with it. How can I write a JUnit
test to do that independently of the viewer? I need to start writing such
tests, so now is a good time to learn.





On Thu, Jul 9, 2015 at 4:45 PM, Stephen Cameron <st...@gmail.com>
wrote:

> changing it to java.util.Date and rebuilding fixes the problem, then going
> back to o.a.i.applib.Date breaks it again.
>
> I am using Eclipse too!
>
> For interest I'll try a class with just one date field and see what
> happens.
>
> Then I'll try the Joda library instead.
>
>
>
> On Thu, Jul 9, 2015 at 2:51 PM, Dan Haywood <da...@haywood-associates.co.uk>
> wrote:
>
>> I'm not completely sure the issue is from using o.a.i.applib.value.Date
>> (though in any case you probably should be using one of the Joda date
>> classes instead).
>>
>> Rather, when I've seen this DN issue it's because it has attempted -
>> through a race condition or for some other hard-to-replicate reason - to
>> re-enhance an already enhanced class, or at any rate the enhancement is
>> out-of-whack with the actual fields of the class.
>>
>> I've only ever hit this issue when using Eclipse and relying on the DN
>> plugin's automatic enhancement.  I've never had the issue when using
>> IntelliJ, or from the command line.
>>
>> When the issue went away by you moving away from o.a.i.applib.value.Date
>> to
>> something else, it was probably nothing more than the code got recompiled
>> and then re-enhanced correctly.  Try reverting back to
>> o.a.i.applib.value.Date and it'll probably still work.  (If it doesn't,
>> then that'll be a useful test case for us to work from!)
>>
>> Thx
>> Dan
>>
>>
>>
>>
>>
>>
>> On 9 July 2015 at 05:45, Stephen Cameron <st...@gmail.com>
>> wrote:
>>
>> > Reason was me trying to use:
>> > org.apache.isis.applib.value.Date
>> >
>> > ---------- Forwarded message ----------
>> > From: Stephen Cameron <st...@gmail.com>
>> > Date: Thu, Jul 9, 2015 at 1:32 PM
>> > Subject: java.lang.IllegalArgumentException: out of field index :15
>> > To: users@isis.apache.org
>> >
>> >
>> > Hi,
>> >
>> > I have a DataNucleus error, with a not very informative message!
>> >
>> >
>> >
>> > Caused by: java.lang.IllegalArgumentException: out of field index :15
>> >     at
>> >
>> >
>> au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyField(SocialFactors.java)
>> >     at
>> >
>> >
>> au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyFields(SocialFactors.java)
>> >     at
>> >
>> org.datanucleus.state.JDOStateManager.saveFields(JDOStateManager.java:694)
>> >     at
>> >
>> >
>> org.datanucleus.state.JDOStateManager.initialiseForPersistentNew(JDOStateManager.java:437)
>> >
>> >
>> >
>> > Class is presently:
>> >
>> > package au.com.scds.chats.dom.modules.participant;
>> >
>> > import javax.jdo.annotations.Column;
>> > import javax.jdo.annotations.IdentityType;
>> > import javax.jdo.annotations.VersionStrategy;
>> >
>> > import org.apache.isis.applib.DomainObjectContainer;
>> > 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.MemberOrder;
>> > import org.apache.isis.applib.annotation.Property;
>> > import org.apache.isis.applib.annotation.Where;
>> > import org.apache.isis.applib.value.Date;
>> >
>> > @javax.jdo.annotations.PersistenceCapable(identityType =
>> > IdentityType.DATASTORE)
>> > @javax.jdo.annotations.DatastoreIdentity(strategy =
>> > javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column = "id")
>> > @javax.jdo.annotations.Version(strategy =
>> VersionStrategy.VERSION_NUMBER,
>> > column = "version")
>> > @DomainObject(objectType = "SOCIAL-FACTORS")
>> > @DomainObjectLayout(bookmarking = BookmarkPolicy.AS_ROOT)
>> > public class SocialFactors {
>> >
>> >     public String title() {
>> >         return "Social Factors of Participant: " + parent.getFullname();
>> >     }
>> >
>> >     // {{ ParentParticipant (property)
>> >     private Participant parent;
>> >
>> >     @Column(allowsNull = "false")
>> >     @Property(hidden = Where.EVERYWHERE)
>> >     public Participant getParentParticipant() {
>> >         return parent;
>> >     }
>> >
>> >     public void setParentParticipant(final Participant parent) {
>> >         if (this.parent == null && parent != null)
>> >             this.parent = parent;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ LimitingHealthIssues (property)
>> >     private String limitingHealthIssues;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "1")
>> >     public String getLimitingHealthIssues() {
>> >         return limitingHealthIssues;
>> >     }
>> >
>> >     public void setLimitingHealthIssues(final String
>> limitingHealthIssues)
>> > {
>> >         this.limitingHealthIssues = limitingHealthIssues;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ OtherLimitingFactors (property)
>> >     private String otherLimitingFactors;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "2")
>> >     public String getOtherLimitingFactors() {
>> >         return otherLimitingFactors;
>> >     }
>> >
>> >     public void setOtherLimitingFactors(final String
>> otherLimitingFactors)
>> > {
>> >         this.otherLimitingFactors = otherLimitingFactors;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ DriversLicence (property)
>> >     private String driversLicence;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "3")
>> >     public String getDriversLicence() {
>> >         return driversLicence;
>> >     }
>> >
>> >     public void setDriversLicence(final String driversLicence) {
>> >         this.driversLicence = driversLicence;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ DrivingAbility (property)
>> >     private String drivingAbility;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "4")
>> >     public String getDrivingAbility() {
>> >         return drivingAbility;
>> >     }
>> >
>> >     public void setDrivingAbility(final String drivingAbility) {
>> >         this.drivingAbility = drivingAbility;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ DrivingConfidence (property)
>> >     private String drivingConfidence;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "5")
>> >     public String getDrivingConfidence() {
>> >         return drivingConfidence;
>> >     }
>> >
>> >     public void setDrivingConfidence(final String drivingConfidence) {
>> >         this.drivingConfidence = drivingConfidence;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ PlaceOfOrigin (property)
>> >     private String placeOfOrigin;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "6")
>> >     public String getPlaceOfOrigin() {
>> >         return placeOfOrigin;
>> >     }
>> >
>> >     public void setPlaceOfOrigin(final String placeOfOrigin) {
>> >         this.placeOfOrigin = placeOfOrigin;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ DateofSettlement (property)
>> >     private Date dateOfSettlement;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "7")
>> >     public Date getDateofSettlement() {
>> >         return dateOfSettlement;
>> >     }
>> >
>> >     public void setDateofSettlement(final Date dateOfSettlement) {
>> >         this.dateOfSettlement = dateOfSettlement;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ closeRelatives (property)
>> >     private String closeRelatives;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "8")
>> >     public String getCloseRelatives() {
>> >         return closeRelatives;
>> >     }
>> >
>> >     public void setCloseRelatives(final String closeRelatives) {
>> >         this.closeRelatives = closeRelatives;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ closeRelativeAndFriendCount (property)
>> >     private Integer closeRelativeAndFriendCount;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "9")
>> >     public Integer getCloseRelativeAndFriendCount() {
>> >         return closeRelativeAndFriendCount;
>> >     }
>> >
>> >     public void setCloseRelativeAndFriendCount(
>> >             final Integer closeRelativeAndFriendCount) {
>> >         this.closeRelativeAndFriendCount = closeRelativeAndFriendCount;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ ProximityOfRelatives (property)
>> >     private String proximityOfRelatives;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "10")
>> >     public String getProximityOfRelatives() {
>> >         return proximityOfRelatives;
>> >     }
>> >
>> >     public void setProximityOfRelatives(final String
>> proximityOfRelatives)
>> > {
>> >         this.proximityOfRelatives = proximityOfRelatives;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ ProximityOfFriends (property)
>> >     private String proximityOfFriends;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "11")
>> >     public String getProximityOfFriends() {
>> >         return proximityOfFriends;
>> >     }
>> >
>> >     @Column(allowsNull = "true")
>> >     public void setProximityOfFriends(final String proximityOfFriends) {
>> >         this.proximityOfFriends = proximityOfFriends;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ InvolvementInGroupsClubs (property)
>> >     private String involvementInGroupsClubs;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "12")
>> >     public String getInvolvementInGroupsClubs() {
>> >         return involvementInGroupsClubs;
>> >     }
>> >
>> >     public void setInvolvementInGroupsClubs(final String involvement) {
>> >         this.involvementInGroupsClubs = involvement;
>> >     }
>> >
>> >     // }}
>> >
>> >     // {{ involvementInInterestsHobbies (property)
>> >     private String involvementInInterestsHobbies;
>> >
>> >     @Column(allowsNull = "true")
>> >     @MemberOrder(sequence = "13")
>> >     public String getInvolvementInInterestsHobbies() {
>> >         return involvementInInterestsHobbies;
>> >     }
>> >
>> >     public void setInvolvementInInterestsHobbies(
>> >             final String involvmentInInterestsHobbies) {
>> >         this.involvementInInterestsHobbies =
>> involvmentInInterestsHobbies;
>> >     } // }}
>> >
>> >     // {{ injected dependencies
>> >     @javax.inject.Inject
>> >     @SuppressWarnings("unused")
>> >     private DomainObjectContainer container;
>> >     // }}
>> >
>> > }
>> >
>>
>
>

Re: java.lang.IllegalArgumentException: out of field index :15

Posted by Stephen Cameron <st...@gmail.com>.
changing it to java.util.Date and rebuilding fixes the problem, then going
back to o.a.i.applib.Date breaks it again.

I am using Eclipse too!

For interest I'll try a class with just one date field and see what happens.

Then I'll try the Joda library instead.



On Thu, Jul 9, 2015 at 2:51 PM, Dan Haywood <da...@haywood-associates.co.uk>
wrote:

> I'm not completely sure the issue is from using o.a.i.applib.value.Date
> (though in any case you probably should be using one of the Joda date
> classes instead).
>
> Rather, when I've seen this DN issue it's because it has attempted -
> through a race condition or for some other hard-to-replicate reason - to
> re-enhance an already enhanced class, or at any rate the enhancement is
> out-of-whack with the actual fields of the class.
>
> I've only ever hit this issue when using Eclipse and relying on the DN
> plugin's automatic enhancement.  I've never had the issue when using
> IntelliJ, or from the command line.
>
> When the issue went away by you moving away from o.a.i.applib.value.Date to
> something else, it was probably nothing more than the code got recompiled
> and then re-enhanced correctly.  Try reverting back to
> o.a.i.applib.value.Date and it'll probably still work.  (If it doesn't,
> then that'll be a useful test case for us to work from!)
>
> Thx
> Dan
>
>
>
>
>
>
> On 9 July 2015 at 05:45, Stephen Cameron <st...@gmail.com>
> wrote:
>
> > Reason was me trying to use:
> > org.apache.isis.applib.value.Date
> >
> > ---------- Forwarded message ----------
> > From: Stephen Cameron <st...@gmail.com>
> > Date: Thu, Jul 9, 2015 at 1:32 PM
> > Subject: java.lang.IllegalArgumentException: out of field index :15
> > To: users@isis.apache.org
> >
> >
> > Hi,
> >
> > I have a DataNucleus error, with a not very informative message!
> >
> >
> >
> > Caused by: java.lang.IllegalArgumentException: out of field index :15
> >     at
> >
> >
> au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyField(SocialFactors.java)
> >     at
> >
> >
> au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyFields(SocialFactors.java)
> >     at
> >
> org.datanucleus.state.JDOStateManager.saveFields(JDOStateManager.java:694)
> >     at
> >
> >
> org.datanucleus.state.JDOStateManager.initialiseForPersistentNew(JDOStateManager.java:437)
> >
> >
> >
> > Class is presently:
> >
> > package au.com.scds.chats.dom.modules.participant;
> >
> > import javax.jdo.annotations.Column;
> > import javax.jdo.annotations.IdentityType;
> > import javax.jdo.annotations.VersionStrategy;
> >
> > import org.apache.isis.applib.DomainObjectContainer;
> > 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.MemberOrder;
> > import org.apache.isis.applib.annotation.Property;
> > import org.apache.isis.applib.annotation.Where;
> > import org.apache.isis.applib.value.Date;
> >
> > @javax.jdo.annotations.PersistenceCapable(identityType =
> > IdentityType.DATASTORE)
> > @javax.jdo.annotations.DatastoreIdentity(strategy =
> > javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column = "id")
> > @javax.jdo.annotations.Version(strategy = VersionStrategy.VERSION_NUMBER,
> > column = "version")
> > @DomainObject(objectType = "SOCIAL-FACTORS")
> > @DomainObjectLayout(bookmarking = BookmarkPolicy.AS_ROOT)
> > public class SocialFactors {
> >
> >     public String title() {
> >         return "Social Factors of Participant: " + parent.getFullname();
> >     }
> >
> >     // {{ ParentParticipant (property)
> >     private Participant parent;
> >
> >     @Column(allowsNull = "false")
> >     @Property(hidden = Where.EVERYWHERE)
> >     public Participant getParentParticipant() {
> >         return parent;
> >     }
> >
> >     public void setParentParticipant(final Participant parent) {
> >         if (this.parent == null && parent != null)
> >             this.parent = parent;
> >     }
> >
> >     // }}
> >
> >     // {{ LimitingHealthIssues (property)
> >     private String limitingHealthIssues;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "1")
> >     public String getLimitingHealthIssues() {
> >         return limitingHealthIssues;
> >     }
> >
> >     public void setLimitingHealthIssues(final String
> limitingHealthIssues)
> > {
> >         this.limitingHealthIssues = limitingHealthIssues;
> >     }
> >
> >     // }}
> >
> >     // {{ OtherLimitingFactors (property)
> >     private String otherLimitingFactors;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "2")
> >     public String getOtherLimitingFactors() {
> >         return otherLimitingFactors;
> >     }
> >
> >     public void setOtherLimitingFactors(final String
> otherLimitingFactors)
> > {
> >         this.otherLimitingFactors = otherLimitingFactors;
> >     }
> >
> >     // }}
> >
> >     // {{ DriversLicence (property)
> >     private String driversLicence;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "3")
> >     public String getDriversLicence() {
> >         return driversLicence;
> >     }
> >
> >     public void setDriversLicence(final String driversLicence) {
> >         this.driversLicence = driversLicence;
> >     }
> >
> >     // }}
> >
> >     // {{ DrivingAbility (property)
> >     private String drivingAbility;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "4")
> >     public String getDrivingAbility() {
> >         return drivingAbility;
> >     }
> >
> >     public void setDrivingAbility(final String drivingAbility) {
> >         this.drivingAbility = drivingAbility;
> >     }
> >
> >     // }}
> >
> >     // {{ DrivingConfidence (property)
> >     private String drivingConfidence;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "5")
> >     public String getDrivingConfidence() {
> >         return drivingConfidence;
> >     }
> >
> >     public void setDrivingConfidence(final String drivingConfidence) {
> >         this.drivingConfidence = drivingConfidence;
> >     }
> >
> >     // }}
> >
> >     // {{ PlaceOfOrigin (property)
> >     private String placeOfOrigin;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "6")
> >     public String getPlaceOfOrigin() {
> >         return placeOfOrigin;
> >     }
> >
> >     public void setPlaceOfOrigin(final String placeOfOrigin) {
> >         this.placeOfOrigin = placeOfOrigin;
> >     }
> >
> >     // }}
> >
> >     // {{ DateofSettlement (property)
> >     private Date dateOfSettlement;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "7")
> >     public Date getDateofSettlement() {
> >         return dateOfSettlement;
> >     }
> >
> >     public void setDateofSettlement(final Date dateOfSettlement) {
> >         this.dateOfSettlement = dateOfSettlement;
> >     }
> >
> >     // }}
> >
> >     // {{ closeRelatives (property)
> >     private String closeRelatives;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "8")
> >     public String getCloseRelatives() {
> >         return closeRelatives;
> >     }
> >
> >     public void setCloseRelatives(final String closeRelatives) {
> >         this.closeRelatives = closeRelatives;
> >     }
> >
> >     // }}
> >
> >     // {{ closeRelativeAndFriendCount (property)
> >     private Integer closeRelativeAndFriendCount;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "9")
> >     public Integer getCloseRelativeAndFriendCount() {
> >         return closeRelativeAndFriendCount;
> >     }
> >
> >     public void setCloseRelativeAndFriendCount(
> >             final Integer closeRelativeAndFriendCount) {
> >         this.closeRelativeAndFriendCount = closeRelativeAndFriendCount;
> >     }
> >
> >     // }}
> >
> >     // {{ ProximityOfRelatives (property)
> >     private String proximityOfRelatives;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "10")
> >     public String getProximityOfRelatives() {
> >         return proximityOfRelatives;
> >     }
> >
> >     public void setProximityOfRelatives(final String
> proximityOfRelatives)
> > {
> >         this.proximityOfRelatives = proximityOfRelatives;
> >     }
> >
> >     // }}
> >
> >     // {{ ProximityOfFriends (property)
> >     private String proximityOfFriends;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "11")
> >     public String getProximityOfFriends() {
> >         return proximityOfFriends;
> >     }
> >
> >     @Column(allowsNull = "true")
> >     public void setProximityOfFriends(final String proximityOfFriends) {
> >         this.proximityOfFriends = proximityOfFriends;
> >     }
> >
> >     // }}
> >
> >     // {{ InvolvementInGroupsClubs (property)
> >     private String involvementInGroupsClubs;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "12")
> >     public String getInvolvementInGroupsClubs() {
> >         return involvementInGroupsClubs;
> >     }
> >
> >     public void setInvolvementInGroupsClubs(final String involvement) {
> >         this.involvementInGroupsClubs = involvement;
> >     }
> >
> >     // }}
> >
> >     // {{ involvementInInterestsHobbies (property)
> >     private String involvementInInterestsHobbies;
> >
> >     @Column(allowsNull = "true")
> >     @MemberOrder(sequence = "13")
> >     public String getInvolvementInInterestsHobbies() {
> >         return involvementInInterestsHobbies;
> >     }
> >
> >     public void setInvolvementInInterestsHobbies(
> >             final String involvmentInInterestsHobbies) {
> >         this.involvementInInterestsHobbies =
> involvmentInInterestsHobbies;
> >     } // }}
> >
> >     // {{ injected dependencies
> >     @javax.inject.Inject
> >     @SuppressWarnings("unused")
> >     private DomainObjectContainer container;
> >     // }}
> >
> > }
> >
>

Re: java.lang.IllegalArgumentException: out of field index :15

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
I'm not completely sure the issue is from using o.a.i.applib.value.Date
(though in any case you probably should be using one of the Joda date
classes instead).

Rather, when I've seen this DN issue it's because it has attempted -
through a race condition or for some other hard-to-replicate reason - to
re-enhance an already enhanced class, or at any rate the enhancement is
out-of-whack with the actual fields of the class.

I've only ever hit this issue when using Eclipse and relying on the DN
plugin's automatic enhancement.  I've never had the issue when using
IntelliJ, or from the command line.

When the issue went away by you moving away from o.a.i.applib.value.Date to
something else, it was probably nothing more than the code got recompiled
and then re-enhanced correctly.  Try reverting back to
o.a.i.applib.value.Date and it'll probably still work.  (If it doesn't,
then that'll be a useful test case for us to work from!)

Thx
Dan






On 9 July 2015 at 05:45, Stephen Cameron <st...@gmail.com> wrote:

> Reason was me trying to use:
> org.apache.isis.applib.value.Date
>
> ---------- Forwarded message ----------
> From: Stephen Cameron <st...@gmail.com>
> Date: Thu, Jul 9, 2015 at 1:32 PM
> Subject: java.lang.IllegalArgumentException: out of field index :15
> To: users@isis.apache.org
>
>
> Hi,
>
> I have a DataNucleus error, with a not very informative message!
>
>
>
> Caused by: java.lang.IllegalArgumentException: out of field index :15
>     at
>
> au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyField(SocialFactors.java)
>     at
>
> au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyFields(SocialFactors.java)
>     at
> org.datanucleus.state.JDOStateManager.saveFields(JDOStateManager.java:694)
>     at
>
> org.datanucleus.state.JDOStateManager.initialiseForPersistentNew(JDOStateManager.java:437)
>
>
>
> Class is presently:
>
> package au.com.scds.chats.dom.modules.participant;
>
> import javax.jdo.annotations.Column;
> import javax.jdo.annotations.IdentityType;
> import javax.jdo.annotations.VersionStrategy;
>
> import org.apache.isis.applib.DomainObjectContainer;
> 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.MemberOrder;
> import org.apache.isis.applib.annotation.Property;
> import org.apache.isis.applib.annotation.Where;
> import org.apache.isis.applib.value.Date;
>
> @javax.jdo.annotations.PersistenceCapable(identityType =
> IdentityType.DATASTORE)
> @javax.jdo.annotations.DatastoreIdentity(strategy =
> javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column = "id")
> @javax.jdo.annotations.Version(strategy = VersionStrategy.VERSION_NUMBER,
> column = "version")
> @DomainObject(objectType = "SOCIAL-FACTORS")
> @DomainObjectLayout(bookmarking = BookmarkPolicy.AS_ROOT)
> public class SocialFactors {
>
>     public String title() {
>         return "Social Factors of Participant: " + parent.getFullname();
>     }
>
>     // {{ ParentParticipant (property)
>     private Participant parent;
>
>     @Column(allowsNull = "false")
>     @Property(hidden = Where.EVERYWHERE)
>     public Participant getParentParticipant() {
>         return parent;
>     }
>
>     public void setParentParticipant(final Participant parent) {
>         if (this.parent == null && parent != null)
>             this.parent = parent;
>     }
>
>     // }}
>
>     // {{ LimitingHealthIssues (property)
>     private String limitingHealthIssues;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "1")
>     public String getLimitingHealthIssues() {
>         return limitingHealthIssues;
>     }
>
>     public void setLimitingHealthIssues(final String limitingHealthIssues)
> {
>         this.limitingHealthIssues = limitingHealthIssues;
>     }
>
>     // }}
>
>     // {{ OtherLimitingFactors (property)
>     private String otherLimitingFactors;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "2")
>     public String getOtherLimitingFactors() {
>         return otherLimitingFactors;
>     }
>
>     public void setOtherLimitingFactors(final String otherLimitingFactors)
> {
>         this.otherLimitingFactors = otherLimitingFactors;
>     }
>
>     // }}
>
>     // {{ DriversLicence (property)
>     private String driversLicence;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "3")
>     public String getDriversLicence() {
>         return driversLicence;
>     }
>
>     public void setDriversLicence(final String driversLicence) {
>         this.driversLicence = driversLicence;
>     }
>
>     // }}
>
>     // {{ DrivingAbility (property)
>     private String drivingAbility;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "4")
>     public String getDrivingAbility() {
>         return drivingAbility;
>     }
>
>     public void setDrivingAbility(final String drivingAbility) {
>         this.drivingAbility = drivingAbility;
>     }
>
>     // }}
>
>     // {{ DrivingConfidence (property)
>     private String drivingConfidence;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "5")
>     public String getDrivingConfidence() {
>         return drivingConfidence;
>     }
>
>     public void setDrivingConfidence(final String drivingConfidence) {
>         this.drivingConfidence = drivingConfidence;
>     }
>
>     // }}
>
>     // {{ PlaceOfOrigin (property)
>     private String placeOfOrigin;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "6")
>     public String getPlaceOfOrigin() {
>         return placeOfOrigin;
>     }
>
>     public void setPlaceOfOrigin(final String placeOfOrigin) {
>         this.placeOfOrigin = placeOfOrigin;
>     }
>
>     // }}
>
>     // {{ DateofSettlement (property)
>     private Date dateOfSettlement;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "7")
>     public Date getDateofSettlement() {
>         return dateOfSettlement;
>     }
>
>     public void setDateofSettlement(final Date dateOfSettlement) {
>         this.dateOfSettlement = dateOfSettlement;
>     }
>
>     // }}
>
>     // {{ closeRelatives (property)
>     private String closeRelatives;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "8")
>     public String getCloseRelatives() {
>         return closeRelatives;
>     }
>
>     public void setCloseRelatives(final String closeRelatives) {
>         this.closeRelatives = closeRelatives;
>     }
>
>     // }}
>
>     // {{ closeRelativeAndFriendCount (property)
>     private Integer closeRelativeAndFriendCount;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "9")
>     public Integer getCloseRelativeAndFriendCount() {
>         return closeRelativeAndFriendCount;
>     }
>
>     public void setCloseRelativeAndFriendCount(
>             final Integer closeRelativeAndFriendCount) {
>         this.closeRelativeAndFriendCount = closeRelativeAndFriendCount;
>     }
>
>     // }}
>
>     // {{ ProximityOfRelatives (property)
>     private String proximityOfRelatives;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "10")
>     public String getProximityOfRelatives() {
>         return proximityOfRelatives;
>     }
>
>     public void setProximityOfRelatives(final String proximityOfRelatives)
> {
>         this.proximityOfRelatives = proximityOfRelatives;
>     }
>
>     // }}
>
>     // {{ ProximityOfFriends (property)
>     private String proximityOfFriends;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "11")
>     public String getProximityOfFriends() {
>         return proximityOfFriends;
>     }
>
>     @Column(allowsNull = "true")
>     public void setProximityOfFriends(final String proximityOfFriends) {
>         this.proximityOfFriends = proximityOfFriends;
>     }
>
>     // }}
>
>     // {{ InvolvementInGroupsClubs (property)
>     private String involvementInGroupsClubs;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "12")
>     public String getInvolvementInGroupsClubs() {
>         return involvementInGroupsClubs;
>     }
>
>     public void setInvolvementInGroupsClubs(final String involvement) {
>         this.involvementInGroupsClubs = involvement;
>     }
>
>     // }}
>
>     // {{ involvementInInterestsHobbies (property)
>     private String involvementInInterestsHobbies;
>
>     @Column(allowsNull = "true")
>     @MemberOrder(sequence = "13")
>     public String getInvolvementInInterestsHobbies() {
>         return involvementInInterestsHobbies;
>     }
>
>     public void setInvolvementInInterestsHobbies(
>             final String involvmentInInterestsHobbies) {
>         this.involvementInInterestsHobbies = involvmentInInterestsHobbies;
>     } // }}
>
>     // {{ injected dependencies
>     @javax.inject.Inject
>     @SuppressWarnings("unused")
>     private DomainObjectContainer container;
>     // }}
>
> }
>

Fwd: java.lang.IllegalArgumentException: out of field index :15

Posted by Stephen Cameron <st...@gmail.com>.
Reason was me trying to use:
org.apache.isis.applib.value.Date

---------- Forwarded message ----------
From: Stephen Cameron <st...@gmail.com>
Date: Thu, Jul 9, 2015 at 1:32 PM
Subject: java.lang.IllegalArgumentException: out of field index :15
To: users@isis.apache.org


Hi,

I have a DataNucleus error, with a not very informative message!



Caused by: java.lang.IllegalArgumentException: out of field index :15
    at
au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyField(SocialFactors.java)
    at
au.com.scds.chats.dom.modules.participant.SocialFactors.jdoCopyFields(SocialFactors.java)
    at
org.datanucleus.state.JDOStateManager.saveFields(JDOStateManager.java:694)
    at
org.datanucleus.state.JDOStateManager.initialiseForPersistentNew(JDOStateManager.java:437)



Class is presently:

package au.com.scds.chats.dom.modules.participant;

import javax.jdo.annotations.Column;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.VersionStrategy;

import org.apache.isis.applib.DomainObjectContainer;
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.MemberOrder;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.value.Date;

@javax.jdo.annotations.PersistenceCapable(identityType =
IdentityType.DATASTORE)
@javax.jdo.annotations.DatastoreIdentity(strategy =
javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column = "id")
@javax.jdo.annotations.Version(strategy = VersionStrategy.VERSION_NUMBER,
column = "version")
@DomainObject(objectType = "SOCIAL-FACTORS")
@DomainObjectLayout(bookmarking = BookmarkPolicy.AS_ROOT)
public class SocialFactors {

    public String title() {
        return "Social Factors of Participant: " + parent.getFullname();
    }

    // {{ ParentParticipant (property)
    private Participant parent;

    @Column(allowsNull = "false")
    @Property(hidden = Where.EVERYWHERE)
    public Participant getParentParticipant() {
        return parent;
    }

    public void setParentParticipant(final Participant parent) {
        if (this.parent == null && parent != null)
            this.parent = parent;
    }

    // }}

    // {{ LimitingHealthIssues (property)
    private String limitingHealthIssues;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "1")
    public String getLimitingHealthIssues() {
        return limitingHealthIssues;
    }

    public void setLimitingHealthIssues(final String limitingHealthIssues) {
        this.limitingHealthIssues = limitingHealthIssues;
    }

    // }}

    // {{ OtherLimitingFactors (property)
    private String otherLimitingFactors;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "2")
    public String getOtherLimitingFactors() {
        return otherLimitingFactors;
    }

    public void setOtherLimitingFactors(final String otherLimitingFactors) {
        this.otherLimitingFactors = otherLimitingFactors;
    }

    // }}

    // {{ DriversLicence (property)
    private String driversLicence;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "3")
    public String getDriversLicence() {
        return driversLicence;
    }

    public void setDriversLicence(final String driversLicence) {
        this.driversLicence = driversLicence;
    }

    // }}

    // {{ DrivingAbility (property)
    private String drivingAbility;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "4")
    public String getDrivingAbility() {
        return drivingAbility;
    }

    public void setDrivingAbility(final String drivingAbility) {
        this.drivingAbility = drivingAbility;
    }

    // }}

    // {{ DrivingConfidence (property)
    private String drivingConfidence;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "5")
    public String getDrivingConfidence() {
        return drivingConfidence;
    }

    public void setDrivingConfidence(final String drivingConfidence) {
        this.drivingConfidence = drivingConfidence;
    }

    // }}

    // {{ PlaceOfOrigin (property)
    private String placeOfOrigin;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "6")
    public String getPlaceOfOrigin() {
        return placeOfOrigin;
    }

    public void setPlaceOfOrigin(final String placeOfOrigin) {
        this.placeOfOrigin = placeOfOrigin;
    }

    // }}

    // {{ DateofSettlement (property)
    private Date dateOfSettlement;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "7")
    public Date getDateofSettlement() {
        return dateOfSettlement;
    }

    public void setDateofSettlement(final Date dateOfSettlement) {
        this.dateOfSettlement = dateOfSettlement;
    }

    // }}

    // {{ closeRelatives (property)
    private String closeRelatives;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "8")
    public String getCloseRelatives() {
        return closeRelatives;
    }

    public void setCloseRelatives(final String closeRelatives) {
        this.closeRelatives = closeRelatives;
    }

    // }}

    // {{ closeRelativeAndFriendCount (property)
    private Integer closeRelativeAndFriendCount;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "9")
    public Integer getCloseRelativeAndFriendCount() {
        return closeRelativeAndFriendCount;
    }

    public void setCloseRelativeAndFriendCount(
            final Integer closeRelativeAndFriendCount) {
        this.closeRelativeAndFriendCount = closeRelativeAndFriendCount;
    }

    // }}

    // {{ ProximityOfRelatives (property)
    private String proximityOfRelatives;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "10")
    public String getProximityOfRelatives() {
        return proximityOfRelatives;
    }

    public void setProximityOfRelatives(final String proximityOfRelatives) {
        this.proximityOfRelatives = proximityOfRelatives;
    }

    // }}

    // {{ ProximityOfFriends (property)
    private String proximityOfFriends;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "11")
    public String getProximityOfFriends() {
        return proximityOfFriends;
    }

    @Column(allowsNull = "true")
    public void setProximityOfFriends(final String proximityOfFriends) {
        this.proximityOfFriends = proximityOfFriends;
    }

    // }}

    // {{ InvolvementInGroupsClubs (property)
    private String involvementInGroupsClubs;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "12")
    public String getInvolvementInGroupsClubs() {
        return involvementInGroupsClubs;
    }

    public void setInvolvementInGroupsClubs(final String involvement) {
        this.involvementInGroupsClubs = involvement;
    }

    // }}

    // {{ involvementInInterestsHobbies (property)
    private String involvementInInterestsHobbies;

    @Column(allowsNull = "true")
    @MemberOrder(sequence = "13")
    public String getInvolvementInInterestsHobbies() {
        return involvementInInterestsHobbies;
    }

    public void setInvolvementInInterestsHobbies(
            final String involvmentInInterestsHobbies) {
        this.involvementInInterestsHobbies = involvmentInInterestsHobbies;
    } // }}

    // {{ injected dependencies
    @javax.inject.Inject
    @SuppressWarnings("unused")
    private DomainObjectContainer container;
    // }}

}