[appengine-java] Re: JPA enhancement problem (DataNucleus)

2010-03-13 Thread datanucleus
> there could be a fluke with how DataNucleus+GAE interpret a particular 
> feature/annotation

The log would tell you if that was the case. More likely the GAE/J
Eclipse plugin of hasn't detected a change in the source file.
Obviously there is also the DataNucleus Eclipse plugin to use ...

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] How to upload pics in appengine java

2010-03-13 Thread seleronm
Hi,

I think that the following links are useful. 
http://stackoverflow.com/questions/1513603/

Please try.
thanks. 


>AFAIK almost any file can be apart of the docs that you upload (images, css,
>html, js, jsp, ico). I haven't had any trouble uploading images.
>
>Are you talking about accepting images from an input form? In that case you
>can store them as a blob type in the datastore.
>
>Hope this helps
>
>On Sun, Mar 14, 2010 at 12:12 AM, nag  wrote:
>
>>
>>
>> Hi
>> I am trying to build online reg form
>> can u help me how to upload image files to app engine.
>>
>> First: is there any way to upload images in app engine?
>>
>> thanks
>> Nag
>>
>> --
>> 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
>> google-appengine-j...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> google-appengine-java+unsubscr...@googlegroups.com> 2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/google-appengine-java?hl=en.
>>
>>
>
>
>-- 
>-Pav
>
>-- 
>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 google-appengine-j...@googlegroups.com.
>To unsubscribe from this group, send email to google-appengine-java+
>unsubscr...@googlegroups.com.
>For more options, visit this group at http://groups.google.com/group/google-
>appengine-java?hl=en.
>
>
>
>---html-part included links---
>mailto:nagarjuna...@gmail.com
>mailto:google-appengine-java@googlegroups.com
>mailto:google-appengine-java%2bunsubscr...@googlegroups.com
>http://groups.google.com/group/google-appengine-java?hl=en

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] How to upload pics in appengine java

2010-03-13 Thread Pavel Byles
AFAIK almost any file can be apart of the docs that you upload (images, css,
html, js, jsp, ico). I haven't had any trouble uploading images.

Are you talking about accepting images from an input form? In that case you
can store them as a blob type in the datastore.

Hope this helps

On Sun, Mar 14, 2010 at 12:12 AM, nag  wrote:

>
>
> Hi
> I am trying to build online reg form
> can u help me how to upload image files to app engine.
>
> First: is there any way to upload images in app engine?
>
> thanks
> Nag
>
> --
> 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
> google-appengine-j...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>


-- 
-Pav

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] How to upload pics in appengine java

2010-03-13 Thread Jeevan Dongre
u can directly upload the images to the GAE,but when you are developing the
web app hope you will using links to specify the images and those images
will uploaded to the engine.you cant explicitly upload any images
Warm Regards,
Jeevan Dongre.

|| Wisdom is Power ||


On Sun, Mar 14, 2010 at 7:12 AM, nag  wrote:

>
>
> Hi
> I am trying to build online reg form
> can u help me how to upload image files to app engine.
>
> First: is there any way to upload images in app engine?
>
> thanks
> Nag
>
> --
> 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
> google-appengine-j...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] How to upload pics in appengine java

2010-03-13 Thread nag


Hi
I am trying to build online reg form
can u help me how to upload image files to app engine.

First: is there any way to upload images in app engine?

thanks
Nag

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Re: Error when deleting entities - Id cannot be zero

2010-03-13 Thread Pavel Byles
Got it to work.
Thanx

On Fri, Mar 12, 2010 at 3:19 PM, thierry LE CONNIAT wrote:

> HI,
> I have try your function deleteAllMyType
> it's functions well, the differenxces are in my class of object :
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION)
> public class Picture {
>private static final Logger log =
> Logger.getLogger(Picture.class.getName());
>
>@PrimaryKey
>private String fileName;
>
>...
> Picture doesn't extend Serializable and my key is not an id...
>
>
>
> On 12 mar, 14:41, Pavel Byles  wrote:
> > I'm trying to delete all entities in my datastore but I receive the
> > following error:
> >
> > javax.jdo.JDOUserException: One or more instances could not be deleted...
> > NestedThrowablesStackTrace:
> > java.lang.IllegalArgumentException: id cannot be zero...
> >
> > Caused by:java.lang.IllegalArgumentException: id cannot be zero
> >
> > For the following code:
> >
> >   public void deleteAllMyType() {
> > PersistenceManager pm = PMF.get().getPersistenceManager();
> > Query query = pm.newQuery(MyType.class);
> > try {
> >   query.deletePersistentAll();
> >   //List clist = (List) query.execute();
> >   //pm.deletePersistentAll(clist); // This doesn't work either
> > } finally {
> >   query.closeAll();
> >   pm.close();
> > }
> >   }
> >
> > My entity class looks like this:
> >
> > @PersistenceCapable(identityType = IdentityType.APPLICATION)//,
> detachable =
> > "false")
> > public class MyType implements Serializable {
> >   @PrimaryKey
> >   @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
> >   private Long id;
> >
> >   @Persistent
> >   private String name;
> >   .
> >   .
> >   .
> >
> > }
> >
> > --
> > -Pav
>
> --
> 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
> google-appengine-j...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>


-- 
-Pav

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Best way to perform search on DataStore - Design Question

2010-03-13 Thread niraj
My case:
I am building a website that has several searchable fields from
various entities (example Artist names from artist entity , Album
names from album entity). To have an efficient search capability I
have defined another Entity - SearchType which carries the Searchable
string and the Foreign key to the Entity. Instead of querying all the
Entities one my one - I query SearchType.

My preliminary tests indicate that the query  performance on
SearchType is not great (the names are indexed) . I need google
suggest like quick results in a drop down. What is the best way to
design this.

I have considered Memcache , but I dont think I can run queries on
Memcache . i.e I am running a startsWith() query on JDO today.

Any best practices .

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] decision making

2010-03-13 Thread Miroslav Genov

Hello,
Here are some ideas that could help you find out how to solve this.

Create an object in the database that would map email address to it's 
role. Something similar to:

UserEntity
   User user; // or email that is logge
   String role; // role name

So the information in this table may look similar to:
user: student...@gmail.com, Student
user: mr.simp...@gmail.com, Faculty
user: facultyad...@gmail.com, Admin

You can add this information through some admin page or manually from 
GAE's admin panel.


After you have this information for the current user, then it's not so 
hard to implement custom rendering logic for rendering only required fields
by using the role name. For server side security you can use AOP 
interceptors to detect whether the requested action can be executed by 
that user.


Hope this information will help you. Good luck.


Regards
 Miroslav
  



Jeevan wrote:

hello all,
am developing app called cloud based teaching system.
Initially it accepts the google account user name and password for the
user.
I am thinking of provide 3 different level of authentication.
1)Student
2)Faculty
3)Admin

Admin can add faculty and remove faculty and can do all maintaince
stufss.
Faculty can add and remove students,blogs,docs,groups.
Student can only view blogs and docs.
Now is it possible to take decision based on their email id's.

if yes then how to do it.

am doing this as ma final year engineering project.
please support me.

  


--
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: NullPointerException while running a new app

2010-03-13 Thread anjolight
Hi I am getting the same NullPointerException.

The challenge is that my app runs fine in my local eclipse but it
gives me this error when it's deployed to app engine. And the error
gives me very little information as to what went wrong.

What's the best way to debug the nullpointerexception with JSP?

On Feb 24, 5:05 pm, "Ikai L (Google)"  wrote:
> What's your application ID?
>
> On Fri, Feb 19, 2010 at 12:05 AM, Alberty Pascal
> wrote:
>
>
>
> > Hi all,
>
> > while updating my application, I got the following stack for all
> > request made on it.
> > I try to deploy a really simple new application (created with Eclipse
> > and its plugin) and got the same stack.
>
> > Any idea ?
>
> > Thanks
>
> > Pascal
>
> > java.lang.NullPointerException
> >        at
> > com.google.appengine.runtime.Request.process-7d335e6a040b96cc(Request.java)
> >        at org.apache.jsp.index_jsp._jspService(index_jsp.java:44)
> >        at
> > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
> >        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.handle(ServletHandler.java:
> > 362)
> >        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 org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:268)
> >        at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
> >        at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
> >        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.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:
> > 97)
> >        at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1084)
> >        at
>
> > com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
> > 35)
> >        at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1084)
> >        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.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:
> > 238)
> >        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
>
> > com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:
> > 76)
> >        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
> >        at
>
> > com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:
> > 135)
> >        at
> > com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
> > 235)
> >        at com.google.apphosting.base.RuntimePb$EvaluationRuntime
> > $6.handleBlockingRequest(RuntimePb.java:5485)
> >        at com.google.apphosting.base.RuntimePb$EvaluationRuntime
> > $6.handleBlockingRequest(RuntimePb.java:5483)
> >        at
>
> > com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:
> > 24)
> >        at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
> > 363)
> >        at com.google.net.rpc.impl.Server$2.run(Server.java:837)
> >        at
> > com.google.tracing.LocalTraceSpanRunnable.run(LocalTraceSpanRunnable.java:
> > 56)
> >        at
>
> > com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan(LocalTraceSpanBuilder.java:
> > 536)
> >        at com.

[appengine-java] Re: JPA enhancement problem (DataNucleus)

2010-03-13 Thread Sekhar
They aren't that complex, and I never really got any compile-time
errors (which I think you are referring to) - all the issues are run-
time. Anyway, I went ahead and limited the ORM compiles to just the
subdirectory that has the entities (using the Eclipse GAE option).
Hopefully that'll fix the errors; will report back if it doesn't.

On Mar 13, 8:59 am, David Fuelling  wrote:
> I get this issue pretty often too, although my experience is that you
> likely have an issue with one of your entities (sometimes your entity
> can be properly coded, but there could be a fluke with how DataNucleus
> +GAE interpret a particular feature/annotation, especially with
> JPA).
>
> For example, I had an entity that would fail DataNucleus validation at
> first, but when I would do a "Clean All"+"Auto Build", the Datanucleus
> error would go away until some other class (any java class) was re-
> compiled.  I ended up discovering this by iteratively removing JPA
> features from my Entity one at a time (@OneToOne relationships, etc)
> until the "this class not enhanced" errors went away).  Eventually I
> was able to nail down that I was either annotating something
> incorrectly or DataNucleus/GAE didn't support a particular feature, or
> in one case an actual bug.
>
> Not exactly a clear-cut answer, but that's the path I took.
>
> How complex are your entities?
>
> david
>
> On Mar 11, 7:21 pm, Sekhar  wrote:
>
>
>
> > I'm using the Eclipse Google plugin, and every once in a while after a
> > build I get the dreaded "this class is not enhanced!" errors for all
> > my entities (even when I don't edit any of them). Any idea why this
> > is? If I touch the files, they get built/enhanced again fine, but this
> > is getting to be a real annoyance. I'd appreciate any pointers you can
> > give!

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] decision making

2010-03-13 Thread Jeevan
hello all,
am developing app called cloud based teaching system.
Initially it accepts the google account user name and password for the
user.
I am thinking of provide 3 different level of authentication.
1)Student
2)Faculty
3)Admin

Admin can add faculty and remove faculty and can do all maintaince
stufss.
Faculty can add and remove students,blogs,docs,groups.
Student can only view blogs and docs.
Now is it possible to take decision based on their email id's.

if yes then how to do it.

am doing this as ma final year engineering project.
please support me.

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Not able to write string arrays in data store

2010-03-13 Thread datanucleus
I said have a dummy class with an ArrayList, not a dummy class with a
multiple-dimension array. I also said make the dummy class
persistable ... @PersistenceCapable. Nothing worthy of an example

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Not able to write string arrays in data store

2010-03-13 Thread Ganesh
I thought I have done it by declaring my array elements into a
separate QArray class..I probably misunderstood your solution..Can you
give some code examples involving string arrays and dummy classes?

On Mar 13, 11:49 am, datanucleus  wrote:
> So you didn't declare the dummy class as persistable like I mentioned
> that you ought to do ...

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Memory Leak in the EntityManagerFactory?

2010-03-13 Thread David Fuelling
Hey Max,

Thanks for your reply!  I tried to install the eclipse memory profiler
(TPTP -- 
http://www.eclipse.org/tptp/home/downloads/installguide/InstallGuide42.html#install_update_manager)
but for whatever reason there seems to be a conflict with the Google
Eclipse plugin because now there's no sign of the Google plugins in my
eclipse install.

I see that the Google plugin and the GWT/GAE plugins are installed (in
the installed software window), but I can't access these at all,
either from the button menus or the configuration menus.  It's as if
Eclipse now things my projects is a regular JavaEE project instead of
being a Google Plugin project.  The Google plugin config menus don't
show up in any context menus, or in the project config menus.

I'm currently reverting my eclipse configuration to see if I can
restore things.

Meanwhile, can you recommend a good memory profiler that I could use
with the GAE/Google plugin?

Thanks!

david

On Mar 12, 9:37 pm, "Max Ross (Google)" 
wrote:
> Thanks for the report David, this certainly seems suspicious.  There is at
> least one memory leak I'm aware of but it's related to transactions so
> that's probably not what you're bumping into.  Have you tried taking a heap
> dump to see what exactly is building up?
>
>
>
> On Fri, Mar 12, 2010 at 1:27 PM, David Fuelling  wrote:
> > I have a JUnit test class that is attempting to test some JPA
> > datastore "create" operations, and I'm getting results that *seem* to
> > indicate a memory leak in the EntityManagerFactory (?)  Basically, if
> > I use "test1a" (see below), the heap in use by the JUnit test process
> > continually increases until the JUnit test fails with an OutOfMemory
> > error.  Test1b suffers from no such problem.
>
> > I would not expect this type of behavior from test1a because even
> > though I'm creating a new EntityManager upon every for-loop iteration,
> > that "em" should go away after every for-loop iteration since the
> > variable reference is replaced with a new EntityManager each time.
>
> > Now, one might argue that my test is just going too fast, and the GC
> > isn't getting a chance to Garbage Collect.  However, Test1a takes a
> > pretty long time to execute on my machine (> 120 seconds), so I
> > *should* be getting some GC, right?  Unless the EntityManagerFactory
> > is holding onto a reference to each created EntityManager?
>
> > Any input here would be much appreciated...
>
> > Thanks!
>
> > david
>
> > ps - my "UserImpl" is a standard JPA entity.
>
> > ///
> > //Begin JUnit Test #1a
> > ///
>
> > User user = null;
> > EntityManager em = null;
> > for (int i = 0; i < 5000; i++)
> > {
> >  //See how I get an em here:
>
> >http://code.google.com/appengine/docs/java/datastore/usingjpa.html#Ge...
> >  em = EMF.get().createEntityManager();
> >  user = new UserImpl("test" + i);
> >  em.persist(user);
> >  em.close();
> > }
>
> > ///
> > //End Test #1b
> > ///
>
> > ///
> > //Begin JUnit Test #1b
> > ///
>
> > User user = null;
> > EntityManager em = EMF.get().createEntityManager();
> > for(int i = 0; i < 5000; i++)
> > {
> >  user = new UserImpl("test" + i);
> >  em.persist(user);
> > }
> > em.close();
>
> > ///
> > //End Test #1b
> > ///
>
> > --
> > 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
> > google-appengine-j...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine-java+unsubscr...@googlegroups.com > unsubscr...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine-java?hl=en.

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: JPA enhancement problem (DataNucleus)

2010-03-13 Thread David Fuelling
I get this issue pretty often too, although my experience is that you
likely have an issue with one of your entities (sometimes your entity
can be properly coded, but there could be a fluke with how DataNucleus
+GAE interpret a particular feature/annotation, especially with
JPA).

For example, I had an entity that would fail DataNucleus validation at
first, but when I would do a "Clean All"+"Auto Build", the Datanucleus
error would go away until some other class (any java class) was re-
compiled.  I ended up discovering this by iteratively removing JPA
features from my Entity one at a time (@OneToOne relationships, etc)
until the "this class not enhanced" errors went away).  Eventually I
was able to nail down that I was either annotating something
incorrectly or DataNucleus/GAE didn't support a particular feature, or
in one case an actual bug.

Not exactly a clear-cut answer, but that's the path I took.

How complex are your entities?

david

On Mar 11, 7:21 pm, Sekhar  wrote:
> I'm using the Eclipse Google plugin, and every once in a while after a
> build I get the dreaded "this class is not enhanced!" errors for all
> my entities (even when I don't edit any of them). Any idea why this
> is? If I touch the files, they get built/enhanced again fine, but this
> is getting to be a real annoyance. I'd appreciate any pointers you can
> give!

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Not able to write string arrays in data store

2010-03-13 Thread datanucleus
So you didn't declare the dummy class as persistable like I mentioned
that you ought to do ...

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Not able to write string arrays in data store

2010-03-13 Thread Ganesh
public class Qarray {
public String[][] Cellval;
public Qarray()
{

}
}

---





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

import java.util.ArrayList;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Question {
@PrimaryKey
@Persistent
private String Pid;
@Persistent
public ArrayList qarray;

public void setQuestion(String progid,String[][] cellval)
{
this.Pid = progid;
Qarray qa = new Qarray();
qa.Cellval = cellval;
this.qarray = new ArrayList(1);
this.qarray.add(qa);
}

public Question()
{
}


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

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

public String[][] getCellval()
{
return this.qarray.get(0).Cellval;
}

}


--



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 still getting exception like,


java.lang.IllegalArgumentException: Qarray 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:112)
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(ContextHan

[appengine-java] sql file launched on startup

2010-03-13 Thread ale
Hi everybody,
I need to have some data loaded on db on the startup of the
application.
How can I do?
is possible to have a simple sql file with some insert of data that
wil be execute only when is create the db?
alternately to execute a java method on server that do the insert and
was called after the deploy?

Thanks, any suggest is welcome!
Regards.
Ale

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] New blog post: Invoke GWT RPC services deployed on Google App Engine

2010-03-13 Thread Trung
A new post 
http://www.gdevelop.com/w/blog/2010/03/13/invoke-gwt-rpc-services-deployed-on-google-app-engine/
shows how to invoke GWT RPC services deployed on Google App Engine
from Java client.

Shorten url http://goo.gl/fb/n99D

Any feedback can be left on my blog, thanks.

Trung

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Abridged summary of google-appengine-java@googlegroups.com - 55 Messages in 25 Topics

2010-03-13 Thread hideki

lo swz
Sent from my MOTOBLUR™ smartphone on AT&T

-Original message-
From: google-appengine-java+nore...@googlegroups.com
To: Abridged Recipients 
Sent: Sat, Mar 13, 2010 04:19:30 GMT+00:00
Subject: [appengine-java] Abridged summary of 
google-appengine-java@googlegroups.com - 55 Messages in 25 Topics

=
Today's Topic Summary
=

Group: google-appengine-java@googlegroups.com
Url: http://groups.google.com/group/google-appengine-java/topics

  - Objectify - Twig - approaches to persistence [15 Updates]
http://groups.google.com/group/google-appengine-java/t/79078132130a3dfe
  - JPA enhancement problem (DataNucleus) [3 Updates]
http://groups.google.com/group/google-appengine-java/t/96cb59ed19678797
  - Error when deleting entities - Id cannot be zero [7 Updates]
http://groups.google.com/group/google-appengine-java/t/b9a5c47684a11d46
  - Cannot Install Plugin [1 Update]
http://groups.google.com/group/google-appengine-java/t/ffd410ae6fcf0a3f
  - DataNucleus: java.lang.IllegalArgumentException: Invalid MTJ Project [3 
Updates]
http://groups.google.com/group/google-appengine-java/t/6f8c7ac8d3cf2279
  - Memory Leak in the EntityManagerFactory? [2 Updates]
http://groups.google.com/group/google-appengine-java/t/afc98d9a853601d2
  - log4j init fails [1 Update]
http://groups.google.com/group/google-appeng

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: How to delete all entities of a kind with the datastore viewer

2010-03-13 Thread Toby
Hi,

If it is a one time thing, the easiest is to use imacro plugin for
firefox (or similar). Just teach it to use the GAE admin to delete the
entities  (20 per page) and then replay it in a lot of loops. This
takes one minute to set up and works perfectly.

Cheers,
Tobias

On Mar 13, 9:44 am, 杨浩  wrote:
> *In my store,have more than 100,000 entities here,but i find delete(limit
> 400) it's cost > 26s*
> my datas is wrong so i must delete all entities of the kind(no index in the
> kind)!
>
> *1. first i use:*
> Query q = pm.newQuery(query);
>q.setRange(0, 400);
> int count = 0;
>try {
>resultList = (List) q.execute();
>for (T t : resultList) {
>pm.deletePersistent(t);
>count++;
>}
>return count;
>} finally {
>q.closeAll();
>}
> I found that:every time it's delete only few entity(<100)!(I watch 200
> entities of the kind with GAE Datastore Viewer)
>
> *2 second i use:*
>
> UtilGAE.howTimer(true),return how time cost with a threadlocal var store a
> start millionseconds,arg is a flag(true if cost time>26second throw a
> IllegalStateException("it's cost more than limit 26s");
>
> DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
> Query query = new
> Query(Section.class.getSimpleName()).setKeysOnly();
> int count = 0;
> try {
> Iterable iter =
> ds.prepare(query).asIterable(FetchOptions.Builder.withLimit(400));
> logger.info("query cost time:{}s",
> UtilGAE.howTimer(true)/1000d);
> for (Entity entity : iter) {
> Key key = entity.getKey();
> ds.delete(entity.getKey());
> count++;
> UtilGAE.howTimer(true);
> }
> if (count != 0) throw new IllegalStateException("next continue
> to delete...");
> } finally {
> logger.info("delete:{},cost time:{}s", count,
> UtilGAE.howTimer()/1000d);
> }
> so it's work fine(it's real delete entity from my store) and a most of cost
> time in the 26s!
>
> I say there have most of limited in the GAE Stored!you must to be carefull
> when you have a larger datastore!
>
> 2010/3/12 Toby 
>
> > Hello,
>
> > deleting 500 should not take a lot of time. Did you try the
> > deletePersistentAll method?
> >Query q = pm.newQuery(persistentClass);
> >q.deletePersistentAll();
>
> > otherwise what I do is using the task queue. I delete 1000 entities
> > and then put a task in the queue to delete another 1000. In that case
> > you can not use the deletePersistentAll. You need to query by object
> > type and limit:
>
> >Query q = pm.newQuery(query);
> >q.setRange(0, size);
>
> >try {
> >resultList = (List) q.execute();
> >resultSize = resultList.size();
> >for (T t : resultList) {
> >pm.deletePersistent(t);
> >}
> >return resultSize;
> >} finally {
> >q.closeAll();
> >}
>
> > since I return the size I see how much records where affected. If it
> > is less than 1000 I know that I can stop doing the queuing.
> > This is a bit difficult to set up but works fine. I believe there is
> > not better way to do that but I am happy about any other suggestions.
>
> > Cheers,
> > Toby

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Re: How to delete all entities of a kind with the datastore viewer

2010-03-13 Thread 杨浩
*In my store,have more than 100,000 entities here,but i find delete(limit
400) it's cost > 26s*
my datas is wrong so i must delete all entities of the kind(no index in the
kind)!

*1. first i use:*
Query q = pm.newQuery(query);
   q.setRange(0, 400);
int count = 0;
   try {
   resultList = (List) q.execute();
   for (T t : resultList) {
   pm.deletePersistent(t);
   count++;
   }
   return count;
   } finally {
   q.closeAll();
   }
I found that:every time it's delete only few entity(<100)!(I watch 200
entities of the kind with GAE Datastore Viewer)

*2 second i use:*

UtilGAE.howTimer(true),return how time cost with a threadlocal var store a
start millionseconds,arg is a flag(true if cost time>26second throw a
IllegalStateException("it's cost more than limit 26s");

DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Query query = new
Query(Section.class.getSimpleName()).setKeysOnly();
int count = 0;
try {
Iterable iter =
ds.prepare(query).asIterable(FetchOptions.Builder.withLimit(400));
logger.info("query cost time:{}s",
UtilGAE.howTimer(true)/1000d);
for (Entity entity : iter) {
Key key = entity.getKey();
ds.delete(entity.getKey());
count++;
UtilGAE.howTimer(true);
}
if (count != 0) throw new IllegalStateException("next continue
to delete...");
} finally {
logger.info("delete:{},cost time:{}s", count,
UtilGAE.howTimer()/1000d);
}
so it's work fine(it's real delete entity from my store) and a most of cost
time in the 26s!

I say there have most of limited in the GAE Stored!you must to be carefull
when you have a larger datastore!

2010/3/12 Toby 

> Hello,
>
> deleting 500 should not take a lot of time. Did you try the
> deletePersistentAll method?
>Query q = pm.newQuery(persistentClass);
>q.deletePersistentAll();
>
> otherwise what I do is using the task queue. I delete 1000 entities
> and then put a task in the queue to delete another 1000. In that case
> you can not use the deletePersistentAll. You need to query by object
> type and limit:
>
>Query q = pm.newQuery(query);
>q.setRange(0, size);
>
>try {
>resultList = (List) q.execute();
>resultSize = resultList.size();
>for (T t : resultList) {
>pm.deletePersistent(t);
>}
>return resultSize;
>} finally {
>q.closeAll();
>}
>
> since I return the size I see how much records where affected. If it
> is less than 1000 I know that I can stop doing the queuing.
> This is a bit difficult to set up but works fine. I believe there is
> not better way to do that but I am happy about any other suggestions.
>
> Cheers,
> Toby
>

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Help with modeling JDO persistent classes

2010-03-13 Thread kattus
Thanks for the reply.

I have thought of this way as well, the problem is that I want to
allow the user to change the value of A.name. In this case I will have
to change all the B.Aname values too, which may by then be thousands
of Bs. This will also force me to put A and B in the same entity group
to be able to change the Bs in the same transaction as A, which I
didn't want because of performance issues mentioned in the
documentation. I have learned since my first post that there are no
joins in JDO, so it seems like the only acceptable way of solving it
(the other one would be to not allow changes in A.name which I don't
want to do). It's a pity since this is a very common type of problem
and without joins there seems to be no good way to solve it..

I would appreciate additional comments if I am missing something..



On Mar 12, 2:39 pm, objectuser  wrote:
> One way to do this would be to duplicate A.name on the associated Bs.
>
> class A {
>   Long id;
>   String name;
>   ...
>
> }
>
> class B {
>   Long id;
>   Long Aid;
>   Long Aname;
>   ...
>
> }
>
> Then you'd be able to do your select on just the B entity group and it
> would work.
>
> On Mar 10, 2:59 am, kattus  wrote:
>
>
>
> > Hi,
>
> > I have 2 persistent classes:
>
> > 1. class A that has a primary key (Long) and a property called
> > "name" (String).
> > 2. class B that is referencing class A (one to many relationship, each
> > B has one A, but A can belong to many B's)
>
> > I need to retrieve the B's sorted by the "name" property of A. In
> > other words if it was relational database I would make something like
> > this (simplified):
>
> > SELECT * FROM A, B WHERE A.id=B.Aid ORDER BY A.name
>
> > The question is how to make this with JDO. I don't want to make A and
> > B in the same entity group and it seams it is not necessary either, I
> > think using unowned relationships may be a good direction, the help is
> > too basic though:
>
> >http://code.google.com/appengine/docs/java/datastore/relationships.ht...
>
> > The questions are:
>
> > Is it possible to define such a relationship between A and B? If yes
> > how (which annotations)? Do I have to use the Key class in B to
> > reference A?
> > How to use the Google query language to write the correct query?
>
> > Thank you,
> > Gil

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Objectify - Twig - approaches to persistence

2010-03-13 Thread John Patterson

On 13 Mar 2010, at 13:14, Jeff Schnitzer wrote:


Some queries will certainly return faster than others, and from what
I've read/watched, keys-only queries should have performance profiles
roughly similar to simple gets.  But there can be no doubt that real
queries are quite slow compared to simple gets.


My point is that you cannot just replace a query with gets.  If your  
app needs gets then use gets.  If your app needs queries then do  
queries.  You really don't have the choice of one or the other just  
because one is faster.



But you're arguing with a straw man here.  I've never suggested that
queries are not useful.

However, you *have* suggested that batch gets aren't important.
"Batch gets are really only useful in apps that need to take a load of
ids from an external source and do something with them."  That's
absolute rubbish.  A very large (and growing) number of applications
are being built on NoSQL databases that are effectively key-value
stores.


I did not say that batch gets are not important.  I was responding to  
your claim that they were more important than queries which may be  
true in your app but not many others - certainly not mine.  You need  
to recognise that different app have different requirements and many  
apps require queries.



 Cassandra, Tokyo Cabinet, HBase, Voldemort, and *dozens* of
other tools are being developed because they can do something that
relational systems can't:  get() and put() vast quantities of data
quickly.


Brilliant.  Good for them.  I really don't see what that has to do  
with making queries easier or faster.



There are a growing number of applications (largely defined by
staggeringly large user bases) in which the cost of maintaining
traditional indexes is not practical.  You aren't going to implement
Twitter or Facebook with a bunch of appengine queries!  But apparently
Cassandra works great.


I am sure FaceBook has a few queries in there somewhere :)  I would  
certainly not say that any one type of datastore operation is all that  
is required for every app.  Our different focuses show that clearly.   
A good GAE framework should support hard queries (OR, AND on multiple  
properties) and *also* batch gets.



I have to ask you something though - would you need to do 9 parallel
queries if you were working with a datastore that has proper spatial
indexes?  Not that doing parallel queries isn't cool, but is it
actually necessary for your app?


If it wasn't for the spatial indexes I would still need ORs - in fact  
on average I query 4-6 geo "blocks" but each may require a few ORs so  
potentially 18  or more queries for one search.  Luckily that is not a  
common case.



I'm not doing spatial queries right now, but it's on the horizon.
I've done the research.  For my application, it's much easier and more
efficient to push my spatial queries off to a cluster of PostGIS
instances running elsewhere in the cloud.  It's also much, much
cheaper.


I might need to look into this as traffic grows.  Incredibly, the keys- 
only part of these queries now returns in about 50-70ms although the  
CPU cost is still high.


This "partial update" approach only works in cases where you are  
not adding
a field that you will query on.  That needs to be an all-or-nothing  
batch

job.


Nonsense, this is totally dependent on the specific logic of your  
application.


Simple example:  You're adding a loginCount to your User entity, and
you want to add a query that selects out users that have logged in
more than N times.  No reason you can't start running those queries
right away.


Not if you have not indexed the login count.  Or it needs to be  
extracted from some other data.




You're trying to dismiss the utility of upgrading the dataset in-place
by saying that *some* application features require the dataset to be
completely transitioned before being enabled.  Ok, some do some don't.
Your claim is still absurd.


No, I have already said that I can see a benefit in certain cases -  
such as your FaceBook example - of in-place changes.  But is not the  
best solution for every type of schema update.


It probably explains why you don't think that OR queries are so  
important.


The reason OR queries aren't high on our priority list is because
nobody has been asking for them.


Well don't implement them if you don't need them.  Get to work on that  
website instead! :)


They were one of the first things I tried on App Engine and one of  
the

reasons Twig was written.  I would bet that most developers could not
imagine working with an RDBMS that did not support OR and AND  
queries (on
more than one property).  Twigs support for these saves time and  
reduces the
complexity of the developers app.  With Objectify they are left on  
their own

to re-invent the wheel every time.


Our conceptual model of the datastore is not an RDBMS.  It's a
key-value store that also allows limited queryability.  If you really
want an RDBMS, I'm sure the Cloud2db gu

[appengine-java] Re: How do I write data in my Google App Engine Datastore to com.google.appengine.api.datastore.Text

2010-03-13 Thread Fabrizio
Jake,

you don't manage null values.



I normally write:

@Persistent
private Text Data;

public void setData(String data) {
if (data == null)
this.Data = null;
else
this.Data = new Text(data);
}

public String getData() {
if (this.Data == null)
return null;
else
return this.Data.getValue();
}



   fabrizio


On Mar 12, 8:22 pm, Jake  wrote:
> Hey,
>
> I presume setMethod() refers to a getter/setter.  So, your persisted
> class would look like:
>
> @Persistent
> Text text;
>
> public void setText(String s) {
>    this.text = new Text(s);
>
> }
>
> public String getText() {
>    return this.text.getValue()
>
> }
>
> The App Engine API is your friend:  
> http://code.google.com/appengine/docs/java/javadoc/
>
> Jake

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.