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 <[email protected]>
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 <[email protected]>
> 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 <[email protected]>
>> wrote:
>>
>> > Reason was me trying to use:
>> > org.apache.isis.applib.value.Date
>> >
>> > ---------- Forwarded message ----------
>> > From: Stephen Cameron <[email protected]>
>> > Date: Thu, Jul 9, 2015 at 1:32 PM
>> > Subject: java.lang.IllegalArgumentException: out of field index :15
>> > To: [email protected]
>> >
>> >
>> > 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;
>> > // }}
>> >
>> > }
>> >
>>
>
>