I am trying to use the toJsonArray on a list of domain objects and getting this:
Code:
2012-02-16 10:06:57,770 [taskScheduler-2] ERROR org.springframework.scheduling.support.MethodInvokingRunnable - Invocation of method 'processPendingMessages' on target class [class com.xyz.art.messaging.MessagingCoordinator] failed
flexjson.JSONException: Error trying to deepSerialize
	at flexjson.transformer.ObjectTransformer.transform(ObjectTransformer.java:61)
	at flexjson.transformer.TransformerWrapper.transform(TransformerWrapper.java:22)
	at flexjson.transformer.ObjectTransformer.transform(ObjectTransformer.java:49)
	at flexjson.transformer.TransformerWrapper.transform(TransformerWrapper.java:22)
	at flexjson.transformer.ObjectTransformer.transform(ObjectTransformer.java:49)
	at flexjson.transformer.TransformerWrapper.transform(TransformerWrapper.java:22)
	at flexjson.transformer.ObjectTransformer.transform(ObjectTransformer.java:49)
	at flexjson.transformer.TransformerWrapper.transform(TransformerWrapper.java:22)
	at flexjson.JSONContext.transform(JSONContext.java:73)
	at flexjson.transformer.IterableTransformer.transform(IterableTransformer.java:29)
	at flexjson.transformer.TransformerWrapper.transform(TransformerWrapper.java:22)
	at flexjson.JSONContext.transform(JSONContext.java:73)
	at flexjson.JSONSerializer.serialize(JSONSerializer.java:377)
	at flexjson.JSONSerializer.serialize(JSONSerializer.java:235)
	at com.xyz.art.domain.Message_Roo_Json.toJsonArray_aroundBody2(Message_Roo_Json.aj:24)
	at com.xyz.art.domain.Message_Roo_Json.ajc$interMethod$com_xyz_art_domain_Message_Roo_Json$com_xyz_art_domain_Message$toJsonArray(Message_Roo_Json.aj:1)
	at com.xyz.art.domain.Message.toJsonArray(Message.java:1)
	at com.xyz.art.domain.Message_Roo_Json.ajc$interMethodDispatch1$com_xyz_art_domain_Message_Roo_Json$com_xyz_art_domain_Message$toJsonArray(Message_Roo_Json.aj)
	at com.xyz.art.messaging.MessagingCoordinator.processPendingMessages(MessagingCoordinator.java:113)
	at sun.reflect.GeneratedMethodAccessor87.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
	at org.springframework.scheduling.support.MethodInvokingRunnable.run(MethodInvokingRunnable.java:65)
	at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:51)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.IllegalAccessException: Class flexjson.BeanProperty can not access a member of class sun.util.calendar.CalendarDate with modifiers "private"
	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
	at java.lang.reflect.Field.doSecurityCheck(Field.java:960)
	at java.lang.reflect.Field.getFieldAccessor(Field.java:896)
	at java.lang.reflect.Field.get(Field.java:358)
	at flexjson.BeanProperty.getValue(BeanProperty.java:104)
	at flexjson.transformer.ObjectTransformer.transform(ObjectTransformer.java:37)
	... 33 more
My class looks like this:
Code:
package com.xyz.art.domain;

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

import javax.persistence.EntityManager;
import javax.persistence.Enumerated;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.TypedQuery;
import javax.validation.constraints.NotNull;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.roo.addon.javabean.RooJavaBean;
import org.springframework.roo.addon.jpa.activerecord.RooJpaActiveRecord;
import org.springframework.roo.addon.json.RooJson;
import org.springframework.roo.addon.tostring.RooToString;

@RooJavaBean
@RooToString
@RooJpaActiveRecord
@RooJson
public class Message {
    @NotNull
    @Enumerated
    private MessageDisplayType displayType;

    @NotNull
    private String title;

    @NotNull
    private String message;
    
    @ManyToMany
    private Set<SiteAuthority> destinationAuthorities = new HashSet<SiteAuthority>();
    
    /**
     * If ackRequired == true, the message will continue to be sent until it is acknowledged.
     * If ackRequired == false, the message is auto-ack'ed when it is sent, as we don't care 
     * about guaranteed delivery.
     */
    private boolean ackRequired = false;
    
    @NotNull
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "MM")
    private Calendar createdOn = Calendar.getInstance();
    
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "MM")
    private Calendar sentOn;
    
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "MM")
    private Calendar start;
    
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "MM")
    private Calendar expiration;
}
Nothing overly crazy. What I am confused about is why it's complaining about serializing the Calendar objects? Aren't all the values marked "private"? I have use the Object.toJsonArray many times, and never had a problem with other class members that were marked as "private".

Anyone know why it might be complaining now?