[appengine-java] Re: API CRUD interface for application ?

2010-10-11 Thread Vaclav Bartacek
What about generating DAO classes ?
http://code.google.com/p/audao/
The generated code calls GAE low-level datastore API directly without
reflection.

Vaclav

On Oct 11, 11:50 am, Maxim Veksler  wrote:
> Hi Didler,
>
> This is a bit off topic from the main discussion I was hoping to have on
> this thread but still: Objectify is an over kill *for our needs*. It's
> faster for us to simply wrap calls to low level DataStore in
> LowLevelDataStore.java calls we make (which return an
> Entity, List, Iterable and co.) in a Repository.java that
> transforms them into application POJO then use Objectify for this which we
> will need to register the classes and pass through the Objectify
> abstraction.
>
> Objectify, Twig itself are great libraries and we are using them in GUI apps
> that are running on the app engine.
>
> Maxim.
>
> On Mon, Oct 11, 2010 at 10:01 AM, Didier Durand 
> wrote:
>
> > Hi Maxim,
>
> > When you say Objectify is overkill,what do you mean ? Did you
> > benchmark it ?
>
> > I switched ito it from JDO and I am pretty satisfied: slick and fast.
> > What is bad about it from your perspective ?
> > regards
> > didier
>
> > On Oct 10, 11:28 pm, Maxim Veksler  wrote:
> > > Hello,
>
> > > The application we run is a backend online service and has no GUI.
> > > We some how need to be able to upload new content / update existing
> > > datastore entity records.
>
> > > The database model is relatively simple: 1 to many relationships on all
> > of
> > > the kinds.
>
> > > I would be happy to use learn about a library / some API configuration
> > > option to expose an interface so that external code can do the CRUD
> > logic.
> > > Is there any support for this in GAE / other library that runs on GAE?
>
> > > If this plays any role in your suggestions:
> > > We're super focused on response times so: We currently use "low level"
> > data
> > > store API.
> > > I actually tried Objectify but found even it to be an over kill for our
> > > needs.
> > > I also deleted all the jars the were added by GAE eclipse plugin but are
> > not
> > > used by the code.
>
> > > Actually the list of jars used by the application consists of:
>
> > > ls war/WEB-INF/lib/
> > > appengine-api-1.0-sdk-1.3.7.jar  appengine-jsr107cache-1.3.7.jar
> > >  jackson-core-asl-1.6.0.jar    jsr107cache-1.1.jar
> > > appengine-api-labs-1.3.7.jar     EyeViewUtils-1.0.1-SNAPSHOT.jar
> > >  jackson-mapper-asl-1.6.0.jar  log4j-1.2.16.jar
>
> > > Any recommendations / personal experience with this issue / pointers
> > about
> > > correct design of the interface / what technology to use and co. are
> > highly
> > > welcome and appreciated.
>
> > > Thank you,
> > > Maxim.
>
> > --
> > 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.



Re: [appengine-java] OneToOne relationship with java.lang.Long ids

2010-10-11 Thread andy stevko
The ID for the owned child User instances has to be a Key or String type
because the it contains both the reference to the parent(s) and the unique
id of the object.  A Long alone will not contain enough information to
navigate the object model to it. I usually stick with String ids for all my
types.

You can create/encode/decode Keys easily using the KeyFactory.



On Mon, Oct 11, 2010 at 8:03 PM, Rick Curtis  wrote:

> Hello all! I am new to GAE and have a pretty simple domain model that I'm
> trying to persist. I am creating an Event(with a generated ID) and a
> User(with a pre-defined ID) which is hosting the event. This is a one to one
> relationship owned by the Event(@See below for code snippets).
>
> Upon commiting the transaction, I'm getting an exception which states
> "Error in meta-data for User._id: Cannot have a java.lang.Long primary key
> and be a child object (owning field is Event._host)." I did some searching
> and came across this[1] post which suggested that I need to change my key
> from a java.lang.Long to a com.google.appengine.api.datastore.Key.
>
> Since "The App Engine Java SDK includes an implementation of JPA 1.0 for
> the App Engine datastore"[2]... I don't really need to use these internal
> GAE classes to describe this mapping do I? Maybe I'm being a bit naive here,
> but I have a hard time believing that this requirement/limitation is due to
> the underlying database not being a relational database.
>
> Hopefully someone can shed some light on my findings.
>
> Thanks,
> Rick
>
> @Entity
> public class Event {
> @Id
> @GeneratedValue(strategy=GenerationType.IDENTITY)
> Long _id;
>
> @OneToOne
> User _host;
> ...
> }
>
>
> @Entity
> public class User {
> @Id
> Long _id;
> ...
> }
>
> [1] http://code.google.com/p/datanucleus-appengine/issues/detail?id=26
> [2]http://code.google.com/appengine/docs/java/datastore/usingjpa.html
>
> --
> 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] Re: Cant compile javax.crypto

2010-10-11 Thread Didier Durand
Hi Stuart,

Yes, according to http://code.google.com/appengine/docs/java/jrewhitelist.html,
javax.crypto is supported.

Question: do you use GWT in your appl? In that case did you put your
use of javax.crypto in client or shared ?

didier

On
Ohttp://code.google.com/appengine/docs/java/jrewhitelist.htmlhttp://code.google.com/appengine/docs/java/jrewhitelist.htmlthttp://code.google.com/appengine/docs/java/jrewhitelist.htmluarct
11, 6:31 pm, Stuart Johnson  wrote:
> Anyone? It's ok to use javax.crypto in App Engine isn't it?

-- 
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] OneToOne relationship with java.lang.Long ids

2010-10-11 Thread Rick Curtis
Hello all! I am new to GAE and have a pretty simple domain model that
I'm trying to persist. I am creating an Event(with a generated ID) and
a User(with a pre-defined ID) which is hosting the event. This is a one
to one relationship owned by the Event(@See below for code snippets).

Upon commiting the transaction, I'm getting an exception which
states "Error in meta-data for User._id: Cannot have a java.lang.Long
primary key and be a child object (owning field is Event._host)." I did
some searching and came across this[1] post which suggested that I need
to change my key from a java.lang.Long to a
com.google.appengine.api.datastore.Key.

Since "The App Engine Java SDK includes an implementation of JPA 1.0
for the App Engine datastore"[2]... I don't really need to use these
internal GAE classes to describe this mapping do I? Maybe I'm being a
bit naive here, but I have a hard time believing that this
requirement/limitation is due to the underlying database not being a
relational database.

Hopefully someone can shed some light on my findings.

Thanks,
Rick

@Entity
public class Event {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long _id;

@OneToOne
User _host;
...
}


@Entity
public class User {
@Id
Long _id;
...
}

[1] http://code.google.com/p/datanucleus-appengine/issues/detail?id=26
[2]http://code.google.com/appengine/docs/java/datastore/usingjpa.html

-- 
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] what is sharding?

2010-10-11 Thread andy stevko
This is a bit of a stretch for this forum.

Perhaps this explanation will help you understand the database design term.
http://stackoverflow.com/questions/992988/what-is-sharding-and-why-is-it-important



On Mon, Oct 11, 2010 at 4:30 AM, sagar misal wrote:

> can  anyone please make me understand what is this sharding and how to
> implement it in java?
>
> --
> 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.



Re: [appengine-java] what is sharding?

2010-10-11 Thread Gal Dolber
http://en.wikipedia.org/wiki/Shard_(database_architecture)

On Mon, Oct 11, 2010 at 7:30 AM, sagar misal wrote:

> can  anyone please make me understand what is this sharding and how to
> implement it in java?
>
> --
> 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.
>
>


-- 
Guit: Elegant, beautiful, modular and *production ready* gwt applications.

http://code.google.com/p/guit/

-- 
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: CPU Time Overload

2010-10-11 Thread Ted Conn
Ok, I actually read that article before but somehow didnt think it
would apply to me... Now I am using a counter object which I am
retrieving by id, and trying to increment a value in an array by 1 and
then just referencing that counter object to retrieve the values
(instead of creating a new Vote object every time there is a vote)


What I am experiencing now is that the integer in the array is not
being incremented. It increments but then when I submit a new vote,
retrieve the counter by poll_id, and read the value in the array, it is
mysteriously back to its original value of zero.


Its like its not being persistent, I am calling
pm.makePersistent(counter) after incrementing, is there any
known "gotchas" to incrementing an object or maintaining persistence?


Attached is my counter object and vote(int answerId) is the method I am
calling to increment the value in the array...

-- 
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.

package net.creativelift.snappypoll;

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

import com.google.appengine.api.datastore.Key;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Counter
{
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Key key;
	
	@Persistent
	private String poll_id;
	
	@Persistent
	private int[] answers;
	
	public Counter(String poll_id, int[] answers)
	{
		this.poll_id = poll_id;
		this.answers = answers;
	}
	
	public Key getKey()
	{
		return key;
	}
	
	public int[] getAnswers()
	{
		return answers;
	}
	
	public String getPollId()
	{
		return poll_id;
	}
	
	public void setPollId(String poll_id)
	{
		this.poll_id = poll_id;
	}
	
	public int getVote(Integer answerId)
	{
		return answers[answerId];
	}
	
	public int vote(int answerId)
	{
		answers[answerId] += 1;
		return answers[answerId];
	}
}


[appengine-java] Problem with large entities? Store in one or two separate entities

2010-10-11 Thread terran
General question - If I have very large entities with information that
varies in usage, should I split the information I use less into another
entity?


I'm creating fairly large entities (column wise) and was wondering what
the proper strategy was to approach storing the properties. An example
is, I'm creating profiles for people. This includes basic information
like name, email, url, but also information like bios, interests,
affiliations. 90%+ of the time I will not need the
bios/interests/affiliations, just the name/email/url. Should I be
splitting the larger blocks of information into another entity, and
rather than just have a "Person" entity, instead have a "Person" entity
AND a "PersonDetails" entity?


I arrived at this concern when I was doing queries, and I fear that
with loading larger entities I'm consuming too many resources getting
each property. Is this something I should be concerned about? Or just
query large entities and it won't matter.


Thanks!

-- 
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] Unable to upload application error - java.io.IOException: Error posting to URL: https://appengine.google.com/api/appversion/deploy?app_id=

2010-10-11 Thread Praveen
Till yesterday, I was able to update my application. Suddenly the
update started failing with an unspecified reason. Can any one help me
to resolve this please!!!.

 This is the log:

Unable to update:
java.io.IOException: Error posting to URL:
https://appengine.google.com/api/appversion/deploy?app_id=stocktrendsindia&version=2&;
400 Bad Request

Client Error (400)
The request is invalid for an unspecified reason.

at
com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java:
149)
at
com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java:
82)
at
com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java:
582)
at
com.google.appengine.tools.admin.AppVersionUpload.deploy(AppVersionUpload.java:
541)
at
com.google.appengine.tools.admin.AppVersionUpload.commit(AppVersionUpload.java:
504)
at
com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java:
129)
at
com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:
56)
at com.google.appengine.tools.admin.AppCfg
$UpdateAction.execute(AppCfg.java:547)
at com.google.appengine.tools.admin.AppCfg.(AppCfg.java:138)
at com.google.appengine.tools.admin.AppCfg.(AppCfg.java:61)
at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:57)
com.google.appengine.tools.admin.AdminException: Unable to update app:
Error posting to URL: 
https://appengine.google.com/api/appversion/deploy?app_id=stocktrendsindia&version=2&;
400 Bad Request

Client Error (400)
The request is invalid for an unspecified reason.

at
com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:
62)
at com.google.appengine.tools.admin.AppCfg
$UpdateAction.execute(AppCfg.java:547)
at com.google.appengine.tools.admin.AppCfg.(AppCfg.java:138)
at com.google.appengine.tools.admin.AppCfg.(AppCfg.java:61)
at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:57)
Caused by: java.io.IOException: Error posting to URL:
https://appengine.google.com/api/appversion/deploy?app_id=stocktrendsindia&version=2&;
400 Bad Request

Client Error (400)
The request is invalid for an unspecified reason.

at
com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java:
149)
at
com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java:
82)
at
com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java:
582)
at
com.google.appengine.tools.admin.AppVersionUpload.deploy(AppVersionUpload.java:
541)
at
com.google.appengine.tools.admin.AppVersionUpload.commit(AppVersionUpload.java:
504)
at
com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java:
129)
at
com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:
56)
... 4 more

-- 
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] what is sharding?

2010-10-11 Thread sagar misal
can  anyone please make me understand what is this sharding and how to
implement it in java?

-- 
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] Is MemcacheService obtained from getMemcacheService("namespace") thread safe?

2010-10-11 Thread Ikai Lan (Google)
Yes. It's just a client.

If you're really worried about this, you don't really save much by doing
this, however, since the only real cost is object allocation.

--
Ikai Lan
Developer Programs Engineer, Google App Engine
Blogger: http://googleappengine.blogspot.com
Reddit: http://www.reddit.com/r/appengine
Twitter: http://twitter.com/app_engine



On Mon, Oct 11, 2010 at 5:01 AM, Maxim Veksler  wrote:

> Hi,
>
> Well the title pretty much says it all.
>
> Is the memcache low level interface of AppEngine Java SDK thread safe? I
> would like to hold a reference to it in a static class level reference
> field.
>
>
> Thanks,
> Maxim.
>
> --
> 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] Re: AppEngine + Google Data APIs + OAuth

2010-10-11 Thread Saqib Ali
I have added sample code as well to this site (courtesy of Google! :)
https://sites.google.com/site/oauthforapi/ 

On Oct 10, 11:31 am, Saqib Ali  wrote:
> Hello All,
>
> I noticed that there is not a lot of material (in fact none) on the
> web for creating an app in App Engine that uses Google Data APIs and
> OAuth for Authorization to the APIs. So I started working on a Google
> Doc to document this process, which now has turned into a Google 
> Site:https://sites.google.com/site/oauthforapi/   (still in progress)
>
> I am looking for:
> 1) Suggestions to improve this step-by-step;
> 2) Few people to review this guide;
> 3) Direct contributors to add content to the guide. I will add these
> folks as contributors to the Google Site.
>
> Next, I am working on sample code that uses this stack.
>
> Saqib

-- 
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: App Engine and IP Addresses

2010-10-11 Thread Peter Ondruska
For performance reasons Google Frontend servers use keep-alives by
default unless you request non-persistent connection with http request
header connection: close.

On Oct 11, 5:34 pm, Benjamin  wrote:
> Guys - thank you.  It's working great. I'm actually impressed at how I
> can us the IP i get from google.com or appspot.com and as long as I
> provide the host my POST get's directed to my app engine app.
>
> I will post more about this in my blog:http://nimbits.blogspot.com/
>
> I now have an Arduino Microcontroller board with an Ethernet shield
> that can post it's data directly to my Nimbits Data Logging Service on
> App Engine :http://www.nimbits.com
>
> The Arduino C code is simply a basic web client (using ethernet.h)
> that does:
>
> client.println("GET /service/currentvalue?
> point=test&email=bsaut...@gmail.com&format=json HTTP/1.1");
> client.println("Host:nimbits1.appspot.com");
> client.println("Accept-Language:en-us,en;q=0.5");
> client.println("Accept-Encoding:gzip,deflate");
> client.println("Connection:close");
> client.println("Cache-Control:max-age=0");
> client.println();
>
> Worth mentioning that I had trouble with http keep alives - i had to
> add a connection close header. Not sure why.
>
> On Oct 10, 5:36 pm, Maxim Veksler  wrote:
>
>
>
> > Exactly.
>
> > Usehttps://addons.mozilla.org/en-US/firefox/addon/6647/tosee what headers
> > your browser send as part of the HTTP GET request and emulate them in C
> > code.
>
> > Should work :).
>
> > On Sat, Oct 9, 2010 at 11:45 PM, Peter Ondruska 
> > wrote:
>
> > > When connecting to IP address you need to use HTTP host header so that
> > > GAE knows which application/virtual server you want.
>
> > > On Oct 9, 6:26 pm, Benjamin  wrote:
> > > > I've been working on a challenge over the past couple of days and I
> > > > could really use a knowledge transfer on App Engine, Domains and IP
> > > > addresses. I seem to be missing something.
>
> > > > I'm trying to write a library for Arduino Micro-controllers to do HTTP
> > > > Posts to a servlet hosted on appengine. For example The URL of the
> > > > servlet is
>
> > > >http://nimbits1.appspot.com/service/currentvalue?point=test&format=json
>
> > > > Do to limitations on the Arduino device, i need to get an IP Address
> > > > that will resolve to nimbits1.appspot.com first, before doing my post
> > > > to /service/currentvalue?point=test&format=json
>
> > > > I have the C code to request an IP from DNS of a domain which works
> > > > without a problem. So far so good. My problem is my requests seem to
> > > > hit a brick wall when I try to use the IP instead of the Domain in my
> > > > requests.
>
> > > > Let's say I ping nimbits1.appspot.com - I get 74.125.113.121 or
> > > > 72.14.204.141 back from the DNS Server. This takes me to Google
> > > > servers, but not my app. I'm guessing that the server want the
> > > > subdomain in the request but i'm not provided one.
>
> > > > I registered a new domain: nimbits.org on godaddy and followed Nick
> > > > Johnson's fine tutorial on mapping naked domains to have nimbits.org
> > > > redirect to nimbits1.appspot.com (As a permanent redirect without
> > > > masking)
>
> > > >http://blog.notdot.net/2009/12/Naked-domains-on-App-Engine
>
> > > > if i navigate tohttp://nimbits.orgIredirect ok tohttp://
> > > nimbits1.appspot.com
>
> > > > Further, if i do a wget in a linux terminal I can see the IP's i'm
> > > > resolving to:
>
> > > > benja...@ben-ubws01:~$ wget nimbits.org
> > > > --2010-10-09 12:20:43--  http://nimbits.org/
> > > > Resolving nimbits.org... 64.202.189.170
> > > > Connecting to nimbits.org|64.202.189.170|:80... connected.
> > > > HTTP request sent, awaiting response... 301 Moved Permanently
> > > > Location:http://nimbits1.appspot.com[following]
> > > > --2010-10-09 12:20:44--  http://nimbits1.appspot.com/
> > > > Resolving nimbits1.appspot.com... 64.233.169.141
> > > > Connecting to nimbits1.appspot.com|64.233.169.141|:80... connected.
> > > > HTTP request sent, awaiting response... 200 OK
> > > > Length: unspecified [text/html]
> > > > Saving to: `index.html.10'
>
> > > >     [ <=>                                   ] 3,376       --.-K/s   in
> > > > 0.003s
>
> > > > 2010-10-09 12:20:44 (1.18 MB/s) - `index.html.10' saved [3376]
>
> > > > If i try and navigate to any of the above IP Addresses i.ehttp://
> > > 64.233.169.141
> > > > I endup on google or godaddy, but not my app.
>
> > > > Any help would be greatly appriciated. I may have to resort to having
> > > > users point their arduino to an internal web server that can forward
> > > > the request, but having arduino devices post directly to app engine
> > > > would be very cool.
>
> > > > -Ben
>
> > > --
> > > 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-ja

[appengine-java] Re: CPU Time Overload

2010-10-11 Thread jdeskins
Looks like you are creating a new Vote object for every vote on a poll
if I am reading this right.

I would suggest using a sharded counter for polls.
http://code.google.com/appengine/articles/sharding_counters.html

Jeff


On Oct 11, 11:24 am, Ted Conn  wrote:
> Hi all, I am returning the results from a poll with a simple results
> servlet that queries the database two times. For some reason, the
> results servlet is causing drastic CPU usage and I can't figure out
> why. Can someone look in here and see if there is something extremely
> obvious that is causing CPU usage to go overboard?
>
> I attached the java file...
>
>  ResultsServlet.java
> 2KViewDownload

-- 
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: Cant compile javax.crypto

2010-10-11 Thread Stuart Johnson
Anyone? It's ok to use javax.crypto in App Engine isn't it?

-- 
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] CPU Time Overload

2010-10-11 Thread Ted Conn
Hi all, I am returning the results from a poll with a simple results
servlet that queries the database two times. For some reason, the
results servlet is causing drastic CPU usage and I can't figure out
why. Can someone look in here and see if there is something extremely
obvious that is causing CPU usage to go overboard?


I attached the java file...

-- 
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.

package net.creativelift.snappypoll;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.logging.Logger;

import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ResultsServlet extends HttpServlet
{
	private static final Logger log = Logger.getLogger(VoteServlet.class.getName());
	
	private PersistenceManager pm;
	private String poll_id;
	
	public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException
	{
		poll_id = req.getParameter("poll_id");
	
		pm = PMF.get().getPersistenceManager();

		List votes = getVotes();
		
		resp.setContentType("text/xml");
		PrintWriter out = resp.getWriter();
		
		try
		{
			Poll poll = getPoll();
			
			int[] countArray = groupedVotes(votes,poll.getAnswers().length);			
			
		out.println("");
		out.println("");
		out.println("" + poll.getQuestion() + "");
		out.println("");
		
		int index = 0;
			for (String answer : poll.getAnswers())
			{
out.println("");
	out.println("");
		out.println(answer);
	out.println("");
	out.println("" + countArray[index] + "");
out.println("");
index += 1;
			}
		
		out.println("");
		out.println("");
			
		}
		catch(IndexOutOfBoundsException e)
		{
			out.println("");
			out.println("");
		}
		
		pm.close();
	}

	private Poll getPoll() throws IndexOutOfBoundsException
	{
		Query query = pm.newQuery(Poll.class);
		query.setFilter("poll_id == pollID");
		query.declareParameters("String pollID");

		List polls = (List) pm.newQuery(query).execute(poll_id);
		
		Poll poll = polls.get(0);
		return poll;
	}
	
	private List getVotes()
	{
		Query query = pm.newQuery(Vote.class);
		query.setFilter("poll_id == pollID");
		query.declareParameters("String pollID");
		
		List votes = (List) pm.newQuery(query).execute(poll_id);
		return votes;
	}
	
	public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException
	{
		/*String poll_id = req.getPathInfo().substring(1,req.getPathInfo().length());
		RequestDispatcher newView = req.getRequestDispatcher( "/results.jsp?poll_id=" + poll_id );
		try
		{
			newView.include( req, resp );
		}
		catch(ServletException e)
		{
			System.out.println("oops");
		}*/
		resp.setContentType("text/xml");
		PrintWriter out = resp.getWriter();
		
		out.println("");
		out.println("");
		
	}
	
	private int[] groupedVotes(List votes,Integer answersAmount)
	{
		int[] countArray = new int[answersAmount];
		for(Vote vote : votes)
		{
			countArray[vote.getAnswer()] += 1;
		}
		
		return countArray;
	}
}


[appengine-java] Re: App Engine and IP Addresses

2010-10-11 Thread Benjamin
Guys - thank you.  It's working great. I'm actually impressed at how I
can us the IP i get from google.com or appspot.com and as long as I
provide the host my POST get's directed to my app engine app.

I will post more about this in my blog: http://nimbits.blogspot.com/

I now have an Arduino Microcontroller board with an Ethernet shield
that can post it's data directly to my Nimbits Data Logging Service on
App Engine : http://www.nimbits.com

The Arduino C code is simply a basic web client (using ethernet.h)
that does:

client.println("GET /service/currentvalue?
point=test&email=bsaut...@gmail.com&format=json HTTP/1.1");
client.println("Host:nimbits1.appspot.com");
client.println("Accept-Language:en-us,en;q=0.5");
client.println("Accept-Encoding:gzip,deflate");
client.println("Connection:close");
client.println("Cache-Control:max-age=0");
client.println();

Worth mentioning that I had trouble with http keep alives - i had to
add a connection close header. Not sure why.





On Oct 10, 5:36 pm, Maxim Veksler  wrote:
> Exactly.
>
> Usehttps://addons.mozilla.org/en-US/firefox/addon/6647/to see what headers
> your browser send as part of the HTTP GET request and emulate them in C
> code.
>
> Should work :).
>
> On Sat, Oct 9, 2010 at 11:45 PM, Peter Ondruska 
> wrote:
>
>
>
> > When connecting to IP address you need to use HTTP host header so that
> > GAE knows which application/virtual server you want.
>
> > On Oct 9, 6:26 pm, Benjamin  wrote:
> > > I've been working on a challenge over the past couple of days and I
> > > could really use a knowledge transfer on App Engine, Domains and IP
> > > addresses. I seem to be missing something.
>
> > > I'm trying to write a library for Arduino Micro-controllers to do HTTP
> > > Posts to a servlet hosted on appengine. For example The URL of the
> > > servlet is
>
> > >http://nimbits1.appspot.com/service/currentvalue?point=test&format=json
>
> > > Do to limitations on the Arduino device, i need to get an IP Address
> > > that will resolve to nimbits1.appspot.com first, before doing my post
> > > to /service/currentvalue?point=test&format=json
>
> > > I have the C code to request an IP from DNS of a domain which works
> > > without a problem. So far so good. My problem is my requests seem to
> > > hit a brick wall when I try to use the IP instead of the Domain in my
> > > requests.
>
> > > Let's say I ping nimbits1.appspot.com - I get 74.125.113.121 or
> > > 72.14.204.141 back from the DNS Server. This takes me to Google
> > > servers, but not my app. I'm guessing that the server want the
> > > subdomain in the request but i'm not provided one.
>
> > > I registered a new domain: nimbits.org on godaddy and followed Nick
> > > Johnson's fine tutorial on mapping naked domains to have nimbits.org
> > > redirect to nimbits1.appspot.com (As a permanent redirect without
> > > masking)
>
> > >http://blog.notdot.net/2009/12/Naked-domains-on-App-Engine
>
> > > if i navigate tohttp://nimbits.orgI redirect ok tohttp://
> > nimbits1.appspot.com
>
> > > Further, if i do a wget in a linux terminal I can see the IP's i'm
> > > resolving to:
>
> > > benja...@ben-ubws01:~$ wget nimbits.org
> > > --2010-10-09 12:20:43--  http://nimbits.org/
> > > Resolving nimbits.org... 64.202.189.170
> > > Connecting to nimbits.org|64.202.189.170|:80... connected.
> > > HTTP request sent, awaiting response... 301 Moved Permanently
> > > Location:http://nimbits1.appspot.com[following]
> > > --2010-10-09 12:20:44--  http://nimbits1.appspot.com/
> > > Resolving nimbits1.appspot.com... 64.233.169.141
> > > Connecting to nimbits1.appspot.com|64.233.169.141|:80... connected.
> > > HTTP request sent, awaiting response... 200 OK
> > > Length: unspecified [text/html]
> > > Saving to: `index.html.10'
>
> > >     [ <=>                                   ] 3,376       --.-K/s   in
> > > 0.003s
>
> > > 2010-10-09 12:20:44 (1.18 MB/s) - `index.html.10' saved [3376]
>
> > > If i try and navigate to any of the above IP Addresses i.ehttp://
> > 64.233.169.141
> > > I endup on google or godaddy, but not my app.
>
> > > Any help would be greatly appriciated. I may have to resort to having
> > > users point their arduino to an internal web server that can forward
> > > the request, but having arduino devices post directly to app engine
> > > would be very cool.
>
> > > -Ben
>
> > --
> > 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 unsub

[appengine-java] Advice on Localization in Datastore

2010-10-11 Thread efleming969
I would like to hear any thoughts on storing localized data in the
datastore.  I'm using the low-level api to access my data and
currently using separate entity kinds (ie.  somekind_en_US,
somekind_fr_FR, etc).  This may make it difficult to fall back on a
value if the localized data has not been provided.

Thanks

-- 
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] Advice on Localization in Datastore

2010-10-11 Thread efleming969
I would like to hear any thoughts on storing localized data in the
datastore.  I'm using the low-level api to access my data and
currently using separate entity kinds (ie.  somekind_en_US,
somekind_fr_FR, etc).  This may make it difficult to fall back on a
value if the localized data has not been provided.

Thanks

-- 
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] Is MemcacheService obtained from getMemcacheService("namespace") thread safe?

2010-10-11 Thread Maxim Veksler
Hi,

Well the title pretty much says it all.

Is the memcache low level interface of AppEngine Java SDK thread safe? I
would like to hold a reference to it in a static class level reference
field.


Thanks,
Maxim.

-- 
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: Problem with persist a child class

2010-10-11 Thread Ian Marshall
Have you seen datanucleus-appengine issue 28 (Cannot add child to
existing one-to-many if parent has Long or unencoded String pk)? Might
this issue relate to your problem?

I encountered this in the past and had to change the data type of the
child persistent entity primary key to work around this issue.


On Oct 9, 7:59 pm, lisandrodc  wrote:
> Hi! I have a problem with persist a child class, using inheritance.
> When I call the method "makePersistent", in the datastore, the object
> doesn't save.
> It does not throw any exception.
> The code at makePersistent and the classes are:
>
> public void crearRegFechaUsuario(Usuario usu,RegFechaUsuario
> rFechUsuario) {
>
>                 Transaction tx = pm.currentTransaction();
>                 try {
>                         tx.begin();
>                        //rFechUsuario is the child class at persist
>                         pm.makePersistent(rFechUsuario);
>                         tx.commit();
>                 } finally {
>                          pm.close();
>                         if (tx.isActive()) {
>                                 tx.rollback();
>                         }
>                 }
>
>         }
>
> @Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
> public  abstract class Fecha   {
>         ...
>
> @PersistenceCapable(identityType =
> IdentityType.APPLICATION,detachable="true")
> //The class with problem at persist
> public class RegFechaUsuario extends Fecha  {
>
>         @Persistent
> ...

-- 
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: makeTransientAll not working

2010-10-11 Thread Puneet
Whether i remove "pm.makeTransientAll((Collection)results);" or NOT, i
am getting the following exception. Please note i am using struts v
2.0.14. Basically i am trying to show the results list that is
returned from the above method in a jsp via struts-tags. I am getting
error in the following line:



Oct 11, 2010 10:54:37 AM com.opensymphony.xwork2.util.OgnlValueStack
logLookupFailure
WARNING: Caught an exception while evaluating expression 'results!=
null && results.size > 0' against value stack
java.lang.ClassCastException:
org.datanucleus.store.appengine.query.StreamingQueryResult cannot be
cast to java.util.Set
at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:46)
at
com.opensymphony.xwork2.util.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAccessor.java:
54)
at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1643)
at ognl.ASTProperty.getValueBody(ASTProperty.java:92)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
at ognl.SimpleNode.getValue(SimpleNode.java:210)
at ognl.ASTChain.getValueBody(ASTChain.java:109)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
at ognl.SimpleNode.getValue(SimpleNode.java:210)
at ognl.ASTGreater.getValueBody(ASTGreater.java:49)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
at ognl.SimpleNode.getValue(SimpleNode.java:210)
at ognl.ASTAnd.getValueBody(ASTAnd.java:56)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
at ognl.SimpleNode.getValue(SimpleNode.java:210)
at ognl.Ognl.getValue(Ognl.java:333)
at com.opensymphony.xwork2.util.OgnlUtil.getValue(OgnlUtil.java:194)
at
com.opensymphony.xwork2.util.OgnlValueStack.findValue(OgnlValueStack.java:
258)
at org.apache.struts2.components.Component.findValue(Component.java:
322)
at org.apache.struts2.components.If.start(If.java:85)
at
org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:
54)
at
org.apache.jsp.jsp.admin.party_jsp._jspx_meth_s_if_1(party_jsp.java:
497)
at org.apache.jsp.jsp.admin.party_jsp._jspService(party_jsp.java:217)
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:
511)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
390)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at
org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:
139)
at
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:
178)
at
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:
348)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
253)
at
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:
221)
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
86)
at com.opensymphony.xwork2.DefaultActionInvocation
$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation
$2.doProfiling(DefaultActionInvocation.java:223)
at
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:
455)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
221)
at
com.opensympho

Re: [appengine-java] makeTransientAll not working

2010-10-11 Thread Cyrille Vincey
Remove the line "pm.makeTransientAll((Collection)results);" and it should
work fine.
And no need for the line "query.closeAll();) as well.

On 11/10/10 12:14, "Puneet"  wrote:

>In the below method, the makeTransientAll method is not working. I am
>not able to show the contents of returned List in jsp.
>
>@Override
>public List getParty (String name) {
>
>List results = null;
>PersistenceManager pm = PMF.get().getPersistenceManager();
>
>Query query = pm.newQuery(Party.class);
>query.setFilter("companyName.startsWith(nameParam)");
>query.declareParameters("String nameParam");
>
>try {
>results = (List) query.execute(name);
>pm.makeTransientAll((Collection)results);
>} finally {
>query.closeAll();
>pm.close();
>}
>
>return results;
>}
>
>If I copy the contents of results to a new ArrayList, then the app is
>working fine. This means that the pm.makeTransientAll method is not
>working. Please help as to where i may be doing wrong.
>
>Thanks.
>
>-- 
>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] makeTransientAll not working

2010-10-11 Thread Puneet
In the below method, the makeTransientAll method is not working. I am
not able to show the contents of returned List in jsp.

@Override
public List getParty (String name) {

List results = null;
PersistenceManager pm = PMF.get().getPersistenceManager();

Query query = pm.newQuery(Party.class);
query.setFilter("companyName.startsWith(nameParam)");
query.declareParameters("String nameParam");

try {
results = (List) query.execute(name);
pm.makeTransientAll((Collection)results);
} finally {
query.closeAll();
pm.close();
}

return results;
}

If I copy the contents of results to a new ArrayList, then the app is
working fine. This means that the pm.makeTransientAll method is not
working. Please help as to where i may be doing wrong.

Thanks.

-- 
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: API CRUD interface for application ?

2010-10-11 Thread Maxim Veksler
Hi Didler,

This is a bit off topic from the main discussion I was hoping to have on
this thread but still: Objectify is an over kill *for our needs*. It's
faster for us to simply wrap calls to low level DataStore in
LowLevelDataStore.java calls we make (which return an
Entity, List, Iterable and co.) in a Repository.java that
transforms them into application POJO then use Objectify for this which we
will need to register the classes and pass through the Objectify
abstraction.

Objectify, Twig itself are great libraries and we are using them in GUI apps
that are running on the app engine.

Maxim.

On Mon, Oct 11, 2010 at 10:01 AM, Didier Durand wrote:

> Hi Maxim,
>
> When you say Objectify is overkill,what do you mean ? Did you
> benchmark it ?
>
> I switched ito it from JDO and I am pretty satisfied: slick and fast.
> What is bad about it from your perspective ?
> regards
> didier
>
> On Oct 10, 11:28 pm, Maxim Veksler  wrote:
> > Hello,
> >
> > The application we run is a backend online service and has no GUI.
> > We some how need to be able to upload new content / update existing
> > datastore entity records.
> >
> > The database model is relatively simple: 1 to many relationships on all
> of
> > the kinds.
> >
> > I would be happy to use learn about a library / some API configuration
> > option to expose an interface so that external code can do the CRUD
> logic.
> > Is there any support for this in GAE / other library that runs on GAE?
> >
> > If this plays any role in your suggestions:
> > We're super focused on response times so: We currently use "low level"
> data
> > store API.
> > I actually tried Objectify but found even it to be an over kill for our
> > needs.
> > I also deleted all the jars the were added by GAE eclipse plugin but are
> not
> > used by the code.
> >
> > Actually the list of jars used by the application consists of:
> >
> > ls war/WEB-INF/lib/
> > appengine-api-1.0-sdk-1.3.7.jar  appengine-jsr107cache-1.3.7.jar
> >  jackson-core-asl-1.6.0.jarjsr107cache-1.1.jar
> > appengine-api-labs-1.3.7.jar EyeViewUtils-1.0.1-SNAPSHOT.jar
> >  jackson-mapper-asl-1.6.0.jar  log4j-1.2.16.jar
> >
> > Any recommendations / personal experience with this issue / pointers
> about
> > correct design of the interface / what technology to use and co. are
> highly
> > welcome and appreciated.
> >
> > Thank you,
> > Maxim.
>
> --
> 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] Exception in struts resource bundle

2010-10-11 Thread Puneet
Hi,

I am using Struts 2.0.14 + Spring 2.5 in an appengine application.
When i saw the logs, it was full of exceptions (pasted below.). Please
note that the application is running fine upon deployment, don't know
why these exceptions are being raised...they are in thousands of
numbers.

I guess it is being raised while getting text from resource-bundle
from struts tags in jsp. eg:
<%@ taglib prefix="s" uri="/struts-tags" %>


My jsp page is full of these kind of tags (s:text). In the UI, they
are resolving correctly but seems to be throwing exceptions for each
of the tags the app-server encounters.

In local, i dodnt see these exceptions, i am seeing them only upon
deployment to app-server.


com.opensymphony.xwork2.util.LocalizedTextUtil reloadBundles: Could
not reload resource bundles
java.lang.SecurityException: java.lang.IllegalAccessException:
Reflection is not allowed on private static final
java.util.concurrent.ConcurrentMap java.util.ResourceBundle.cacheList
at
com.google.appengine.runtime.Request.process-15519e8c5135e1be(Request.java)
at java.lang.reflect.Field.setAccessible(Field.java:166)
at
com.opensymphony.xwork2.util.LocalizedTextUtil.clearMap(LocalizedTextUtil.java:
738)
at
com.opensymphony.xwork2.util.LocalizedTextUtil.reloadBundles(LocalizedTextUtil.java:
701)
at
com.opensymphony.xwork2.util.LocalizedTextUtil.findDefaultText(LocalizedTextUtil.java:
178)
at
com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage(LocalizedTextUtil.java:
581)
at
com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:
463)
at
com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:
224)
at com.opensymphony.xwork2.ActionSupport.getText(ActionSupport.java:
99)
at org.apache.struts2.components.Text.end(Text.java:158)
at
org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:
43)
at
org.apache.jsp.jsp.admin.FRAGMENT_005fadminHeader_jsp._jspx_meth_s_text_0(FRAGMENT_005fadminHeader_jsp.java:
133)
at
org.apache.jsp.jsp.admin.FRAGMENT_005fadminHeader_jsp._jspService(FRAGMENT_005fadminHeader_jsp.java:
63)
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:
511)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
390)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at org.mortbay.jetty.servlet.Dispatcher.include(Dispatcher.java:192)
at
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:
966)
at org.apache.jsp.jsp.admin.login_jsp._jspService(login_jsp.java:63)
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:
511)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
390)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at
org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:
139)
at
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:
178)
at
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:
348)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
253)
at
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:
221)
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
86)
at com.opensymphony.xwork2.DefaultActionInvocation
$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation
$2.doProfiling(DefaultActionInvocation.java:223)
at
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:
455)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:

[appengine-java] Re: API CRUD interface for application ?

2010-10-11 Thread Didier Durand
Hi Maxim,

When you say Objectify is overkill,what do you mean ? Did you
benchmark it ?

I switched ito it from JDO and I am pretty satisfied: slick and fast.
What is bad about it from your perspective ?
regards
didier

On Oct 10, 11:28 pm, Maxim Veksler  wrote:
> Hello,
>
> The application we run is a backend online service and has no GUI.
> We some how need to be able to upload new content / update existing
> datastore entity records.
>
> The database model is relatively simple: 1 to many relationships on all of
> the kinds.
>
> I would be happy to use learn about a library / some API configuration
> option to expose an interface so that external code can do the CRUD logic.
> Is there any support for this in GAE / other library that runs on GAE?
>
> If this plays any role in your suggestions:
> We're super focused on response times so: We currently use "low level" data
> store API.
> I actually tried Objectify but found even it to be an over kill for our
> needs.
> I also deleted all the jars the were added by GAE eclipse plugin but are not
> used by the code.
>
> Actually the list of jars used by the application consists of:
>
> ls war/WEB-INF/lib/
> appengine-api-1.0-sdk-1.3.7.jar  appengine-jsr107cache-1.3.7.jar
>  jackson-core-asl-1.6.0.jar    jsr107cache-1.1.jar
> appengine-api-labs-1.3.7.jar     EyeViewUtils-1.0.1-SNAPSHOT.jar
>  jackson-mapper-asl-1.6.0.jar  log4j-1.2.16.jar
>
> Any recommendations / personal experience with this issue / pointers about
> correct design of the interface / what technology to use and co. are highly
> welcome and appreciated.
>
> Thank you,
> Maxim.

-- 
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] gae eclipse plugin statusbar

2010-10-11 Thread atomi
In eclipse, the gae plugin adds an area in the status bar that as far
as i can tell is used solely for notification of updates to the gae
plugin. I think it takes up valuable space for more important
information and isn't really needed. An option to remove it would be
great. Thanks.

See:
http://i.imgur.com/GDXUs.jpg

-- 
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.