This is the class which I wanted to write into datastore:

import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Question {
    @PrimaryKey
    @Persistent
    private String Pid;
    @Persistent
    public List<Object> Cellval;

    public void setQuestion(String progid, String[][] cellval)
        {
                this.Pid = progid;
                this.Cellval = new ArrayList<Object>(cellval.length);
                for(int i = 0; i < cellval.length; i++) {
                ArrayList<String> Temp2 = new
ArrayList<String>(Arrays.asList(cellval[i]));
                this.Cellval.add(Temp2);
                }

        }

        public Question()
        {
        }


        public void setPid(String pid)
        {
                this.Pid = pid;
        }

        public String getPid()
        {
                return(this.Pid);
        }

        public String[][] getCellval()
        {
                String[][] tempstr = new String[20][20];
                for(int i = 0; i< this.Cellval.size();i++)
                {
                        tempstr[i+1] = (String[])
((ArrayList)this.Cellval.get(i)).toArray();
                }
                return tempstr;
        }
}



I write it using below mentioned lines from a different class:

public void writeQuestion(Question Q1)
        {
               PersistenceManager pm = PMF.get().getPersistenceManager();
                try {
                    pm.makePersistent(Q1);
                } finally {
                    pm.close();
                }

        }


I am getting the below mentioned exception while executing this
'INSERT' action:

java.lang.IllegalArgumentException: java.util.ArrayList is not a
supported property type.
        at
com.google.appengine.api.datastore.DataTypeUtils.checkSupportedSingleValue(DataTypeUtils.java:
114)
        at
com.google.appengine.api.datastore.DataTypeUtils.checkSupportedValue(DataTypeUtils.java:
99)
        at com.google.appengine.api.datastore.Entity.setProperty(Entity.java:
257)
        at
org.datanucleus.store.appengine.DatastoreFieldManager.storeObjectField(DatastoreFieldManager.java:
757)
        at
org.datanucleus.state.AbstractStateManager.providedObjectField(AbstractStateManager.java:
1011)
        at com.cword.proj.Question.jdoProvideField(Question.java)
        at com.cword.proj.Question.jdoProvideFields(Question.java)
        at
org.datanucleus.state.JDOStateManagerImpl.provideFields(JDOStateManagerImpl.java:
2597)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject(DatastorePersistenceHandler.java:
180)
        at
org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOStateManagerImpl.java:
3067)
        at
org.datanucleus.state.JDOStateManagerImpl.makePersistent(JDOStateManagerImpl.java:
3043)
        at
org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.java:
1258)
        at
org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java:
1135)
        at
org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:
668)
        at
org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:
693)
        at com.cword.proj.AccessQuestions.writeQuestion(AccessQuestions.java:
80)
        at org.apache.jsp.Temp_jsp._jspService(Temp_jsp.java:111)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
        at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
324)
        at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
292)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        at com.google.appengine.tools.development.PrivilegedJspServlet.access
$101(PrivilegedJspServlet.java:23)
        at com.google.appengine.tools.development.PrivilegedJspServlet
$2.run(PrivilegedJspServlet.java:59)
        at java.security.AccessController.doPrivileged(Native Method)
        at
com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:
57)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
487)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1093)
        at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
        at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
360)
        at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
        at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
181)
        at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
712)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
        at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
54)
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
139)
        at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:306)
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
139)
        at org.mortbay.jetty.Server.handle(Server.java:313)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
506)
        at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:830)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
        at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
396)
        at org.mortbay.thread.BoundedThreadPool
$PoolThread.run(BoundedThreadPool.java:442)




On Mar 11, 1:02 pm, Robert Lancer <[email protected]> wrote:
> Setting:
>
> List<String> arrayDim1 = new ArrayList<String>();
> List<String> arrayDim2 = new ArrayList<String>();
>
> entity.setUnindexedProperty("ArrayDim1", arrayDim1 );
> entity.setUnindexedProperty("ArrayDim2", arrayDim2 );
>
> Unless your looking to run queries against the lists use the
> setUnindexedProperty.
>
> Getting:
>
> List<String> arrayDim1 = (List<String>)
> entity.getProperty("ArrayDim1");
> List<String> arrayDim2 = (List<String>)
> entity.getProperty("ArrayDim2");
>
> if (arrayDim1 != null)
>
> if(arrayDim2 != null)
>
> On Mar 11, 9:41 am, Ganesh <[email protected]> wrote:
>
>
>
> > Hi,
>
> > Thanks for your response...I dont have my code with me right now..I
> > will post it in a day or two. Meanwhile, do you have any example of
> > handling two dimensional arrays into two separate lists of ArrayList?
>
> > -Thanks
> > Ganesh
>
> > On Mar 10, 5:17 pm, Robert Lancer <[email protected]> wrote:
>
> > > Just use two separate lists of ArrayList<String> and it should work
> > > fine. Also you have to test for null whenever you pull anything out of
> > > datastore, something like
>
> > > if null then return new ArrayList<String>(0)
>
> > > should work this case.
>
> > > On Mar 10, 4:28 pm, thierry Le conniat <[email protected]> wrote:
>
> > > > Hello,
> > > > how to do you retreive data , could you send jour java code ?
>
> > > > On 10 mar, 17:28, Ganesh <[email protected]> wrote:
>
> > > > > Hi,
>
> > > > > I am trying to store two dimensional string array in google data
> > > > > store. I was getting an exception saying this data type not supported.
> > > > > I tried changing the string array object to java.util.arraylist (gave
> > > > > serizable = 'true' option). This time I was able to write the data
> > > > > successfully. But when I tried to retrieve it, I am facing null
> > > > > pointer exception. Can any body help me with this?
>
> > > > > -Thanks
> > > > > Ganesh- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to