Re: [appengine-java] Re: favicon.ico weirdness

2010-08-27 Thread John Patterson
On 26 August 2010 05:28, stanlick stanl...@gmail.com wrote:

 I do not have a frameset.


Yes you do - view source on your page.  You have probably set up a naked
domain with your registrar who host this page and include your website as
a frame within that page.  If you cannot modify this container frameset then
I don't think you will be able to define an icon for the page.

 Is that something being injected by GAE?
 Also, why the does this page icon work in 2 out of 3 cases?


The frameset is only used in one case out of the 3

-- 
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] [Perhaps OT] Oracle vs. Google : Java still a viable language?

2010-08-27 Thread markvgti
Hi all,

Some of you may consider this off-topic (apologies to those that think
it is OT), but I think it's pertinent to generate this discussion:
given Oracle's lawsuit against Google  http://bit.ly/bMEL6A , is
Java a viable programming language anymore? I think the threat of
Oracle adversely affecting the Java community has just become more
real.

Motivation: I am at the early stages of implementing a web app on GAE
using Java, but if I need to switch to Python, I shouldn't delay it
any more.

I understand that Java SE and EE are licensed differently from Java
ME, nonetheless...

Oracle's doesn't enjoy a very good reputation in the open source
world, and I don't trust them, though up to this point it was just an
intrinsic mistrust, without any firm reason behind it.

Java development as a language has also been held up/very slow over
the past few years. Oracle's stewardship only makes things more iffy
(are those the correct spellings :-)?).

What I like about Java SE: the fantastic tutorial (even today it can
sometimes come in handy), javadoc, simplicity, no useless syntactic
sugar (unlike everything designed by Microsoft).

On the other hand, Java EE... is a morass...

Anyway, what do you guys think?

-- 
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 do update Statement in GQL for Java

2010-08-27 Thread Vaclav Bartacek
Try GQLExt java library:
http://audao.spoledge.com/doc-gae-features.html#gqlext

Vaclav

On Aug 26, 5:10 am, TP Project TP Project tpmpproj...@gmail.com
wrote:
 Hi can any1 teach me how to use update statement in GQL??

 thanks in advance

-- 
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] appengine dev at offline mode

2010-08-27 Thread jay
when I switched off my internet, I got exception following:




27/08/2010 3:09:58 PM
com.google.appengine.tools.info.RemoteVersionFactory getVersion
INFO: Unable to access
https://appengine.google.com/api/updatecheck?runtime=javarelease=1.3.6timestamp=1281725222api_versions=['1.0']
java.net.UnknownHostException: appengine.google.com
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:
550)
at
com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:
141)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.protocol.https.HttpsClient.init(HttpsClient.java:
272)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:329)
at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:
172)
at
sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:
801)
at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:
158)
at
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:
1049)
at
sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:
234)
at java.net.URL.openStream(URL.java:1010)
at
com.google.appengine.tools.info.RemoteVersionFactory.getVersion(RemoteVersionFactory.java:
76)
at
com.google.appengine.tools.info.UpdateCheck.checkForUpdates(UpdateCheck.java:
99)
at
com.google.appengine.tools.info.UpdateCheck.doNagScreen(UpdateCheck.java:
174)
at
com.google.appengine.tools.info.UpdateCheck.maybePrintNagScreen(UpdateCheck.java:
142)
at com.google.appengine.tools.development.DevAppServerMain
$StartAction.apply(DevAppServerMain.java:150)
at com.google.appengine.tools.util.Parser
$ParseResult.applyArgs(Parser.java:48)
at
com.google.appengine.tools.development.DevAppServerMain.init(DevAppServerMain.java:
113)
at
com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:
89)
27/08/2010 3:09:59 PM com.google.apphosting.utils.jetty.JettyLogger
info
INFO: Logging to JettyLogger(null) via
com.google.apphosting.utils.jetty.JettyLogger
27/08/2010 3:09:59 PM
com.google.apphosting.utils.config.AppEngineWebXmlReader
readAppEngineWebXml




Is there a way dev at offline mode?


wish reply..

-- 
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] The title of email displays wrongly in localization

2010-08-27 Thread Pieter Coucke
same here: http://code.google.com/p/googleappengine/issues/detail?id=3497

-- 
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: Query result sets are not modifiable

2010-08-27 Thread Simon
You'll have to do something like the following:

- Iterate over the new contact methods and persist them.
- Retrieve the Person object.
- Iterate over the newly persisted contact methods and add their keys
to the Person's list of contact methods

At the moment you're just trying to add objects to a filtered result
set of random contact methods, which doesn't make much sense :)


On Aug 26, 12:54 am, Shaun shaunc...@gmail.com wrote:
 I have no idea how this doesn't seem to come up anywhere when I
 search, but for some reason when I try to add an item to a ListKey
 that has been pulled out of the datastore I get this error:

 java.lang.UnsupportedOperationException: Query result sets are not
 modifiable
         at
 org.datanucleus.store.query.AbstractQueryResult.add(AbstractQueryResult.jav­a:
 221)
         at
 com.appointment.actions.ContactActions.updateContactMethods(ContactActions.­java:
 1186)

 My code looks like this:

 public ListContactMethod updateContactMethods(ListContactMethod
 pPassedContactMethods,ListKey pDatastoreContactMethodKeys) {
 
 PersistenceManager pm = PMF.get().getPersistenceManager();
 Query query = pm.newQuery(ContactMethod.class);
 query.setFilter(key == :keyList);
 query.execute(pDatastoreContactMethodKeys);
 ListContactMethod pDataStoreContactMethods = (ListContactMethod)
 pm.newQuery(query).execute(pDatastoreContactMethodKeys);
 
 for (ContactMethod lContactMethod : pPassedContactMethods) {
 pDataStoreContactMethods.add(lContactMethod);}

 pm.close();
 return pDataStoreContactMethods;

 }

 The goal is that when someone adds a new ContactMethod the system
 picks that up and adds it to the set of Keys reference in that
 Person's ListKey contactsmethods to allow the managing of an unowned
 relationship.

 Thanks ahead of time for any help!

-- 
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: DatastoreService.getCurrentTransaction() throws NoSuchElementException even after PersistenceManager.currentTransaction().begin()

2010-08-27 Thread Simon
Check to make sure you have all of the test Jar files in your
classpath - I remember having this error and I was missing one of them
(can't remember which one I'm afraid...)


On Aug 26, 10:38 pm, Arnold arnold.mi...@gmail.com wrote:
 When using JDO persistence manager to begin a transaction,
 DatastoreService().getCurrentTransaction() seems to fail.

 A unit test:
 --
 public class TransactionTest{
     private final LocalServiceTestHelper helper =
         new LocalServiceTestHelper(new
 LocalDatastoreServiceTestConfig());

     @Before
     public void setUp() {
         helper.setUp();
     }

     @After
     public void tearDown() {
         helper.tearDown();
     }

         @Test
         public void test(){
                 PersistenceManager pm = PMF.get().getPersistenceManager();
                 Transaction tx = pm.currentTransaction();
                 try{
                         tx.begin();

 DatastoreServiceFactory.getDatastoreService().getCurrentTransaction();

                         tx.commit();
                 }finally{
                         if(pm.currentTransaction().isActive()){
                                 pm.currentTransaction().rollback();
                         }
                         pm.close();
                 }

         }}

 --

 The test fails with stack trace:
 --
 java.lang.IllegalStateException: java.util.NoSuchElementException
         at
 com.google.appengine.api.datastore.TransactionStackImpl.peek(TransactionSta­ckImpl.java:
 70)
         at
 com.google.appengine.api.datastore.DatastoreServiceImpl.getCurrentTransacti­on(DatastoreServiceImpl.java:
 307)
         at TransactionTest.test(TransactionTest.java:37)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
 39)
         at
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp­l.java:
 25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at org.junit.runners.model.FrameworkMethod
 $1.runReflectiveCall(FrameworkMethod.java:44)
         at
 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.­java:
 15)
         at
 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.j­ava:
 41)
         at
 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.ja­va:
 20)
         at
 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
 28)
         at
 org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:
 31)
         at
 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.ja­va:
 73)
         at
 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.ja­va:
 46)
         at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
         at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
         at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
         at
 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
 28)
         at
 org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:
 31)
         at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
         at
 org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestRe­ference.java:
 46)
         at
 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
 38)
         at
 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestR­unner.java:
 467)
         at
 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestR­unner.java:
 683)
         at
 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner­.java:
 390)
         at
 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunne­r.java:
 197)
 Caused by: java.util.NoSuchElementException
         at java.util.LinkedList.getFirst(LinkedList.java:109)
         at
 com.google.appengine.api.datastore.TransactionStackImpl.peek(TransactionSta­ckImpl.java:
 68)
         ... 26 more

 --

 As a result, the example shown here:

 http://code.google.com/appengine/docs/java/taskqueue/overview.html#Ta...

 does not work.

 Can someone help shade some light on what I may be missing?

 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] Re: Not able to save child object in one-to-many relationship

2010-08-27 Thread Frederik Pfisterer
Your problem seems to be related to this open gwt issue:
http://code.google.com/p/google-web-toolkit/issues/detail?id=4976

Please star the issue to raise its attention. The workaround is not
using 1:n relationships with GWT + GAE + JDO.

Cheers,
Fred


On 26 Aug., 23:12, hampole rhamp...@gmail.com wrote:
 I am trying to develop GAE application. I am using the latest GWT
 SDK(2.0.4) AND App Engine SDK(1.3.6) on Eclipse3.4. I am having
 problem in saving a child object Appointment and the parent object
 is Employee. Each Employee has many appointments and and each
 appointment has one employee associated with. I have pasted the Client
 code and the server code here. Please help and see what I am missing
 here. I tried many different ways without success. When I retrieve the
 appointments, the employee is always null. I appreciate any help or
 some example that I can try. Thanks.

 //Client code
 public class AppointmentCreateWidget extends Composite {

         private static AppointmentCreateWidgetUiBinder uiBinder = GWT
                         .create(AppointmentCreateWidgetUiBinder.class);

         interface AppointmentCreateWidgetUiBinder extends
                         UiBinderWidget, AppointmentCreateWidget {
         }

         @UiField Button btnSaveAppointment;
         @UiField TextBox tbxSubject;
         @UiField ListBox lbxRoom;
         @UiField ListBox lbxHost;
         @UiField DateBox dbAppointStartDate;
         @UiField DateBox dbAppointEndDate;
         @UiField ListBox lbxStartTimeHr;
         @UiField ListBox lbxEndTimeHr;
         @UiField ListBox lbxStartTimeMi;
         @UiField ListBox lbxEndTimeMi;

         private final AppointmentServiceAsync appointService =
 (AppointmentServiceAsync) GWT.create(AppointmentService.class);
     private final ListVisitor visitors = new ArrayListVisitor();

         public AppointmentCreateWidget() {
                 initWidget(uiBinder.createAndBindUi(this))
     }

         @UiHandler(btnSaveAppointment)
         void onClick(ClickEvent e) {
                 addAppointment();
         }

     private void addAppointment() {
             String subject = tbxSubject.getText().toUpperCase().trim();
             Date startdate = dbAppointStartDate.getValue();
             Date enddate = dbAppointEndDate.getValue();
             String starttime =
 lbxStartTimeHr.getValue(lbxStartTimeHr.getSelectedIndex()).toString()
 +
                 lbxStartTimeMi.getValue(lbxStartTimeMi.getSelectedIndex());
             String endtime =
 lbxEndTimeHr.getValue(lbxEndTimeHr.getSelectedIndex()).toString() +
                 lbxEndTimeMi.getValue(lbxEndTimeMi.getSelectedIndex());
             String room =
 lbxRoom.getValue(lbxRoom.getSelectedIndex()).toString();
             String key = lbxHost.getValue(lbxHost.getSelectedIndex());
             DateTimeFormat dateFormat = DateTimeFormat.getShortDateFormat();

             try {
                     createAppointment(subject, startdate, enddate, starttime,
 endtime, key, visitors);
             }
             catch(Exception ex) {
                 Window.alert(Save Appointment failed:  + ex.toString());
             }
         }

         private void createAppointment(String subject, Date startdate, Date
 enddate, String starttime, String endtime, String empID, ListVisitor
 visitor) {
             appointService.addAppointment(subject,startdate, enddate,
 starttime, endtime, empID, visitor, new AsyncCallbackVoid() {
               public void onFailure(Throwable error) {
                         Window.alert(Unable to create Appointment. +
 error.getMessage());
               }
               public void onSuccess(Void ignore) {
               }
             });
         }

 }

 //ServiceImpl
 public class AppointmentServiceImpl extends RemoteServiceServlet
 implements AppointmentService {
   /**
          *
          */
   private static final long serialVersionUID = 1L;

   public void addAppointment(String subject, Date appointStartDate,
 Date appointEndDate, String startTime, String endTime, String empID,
 ListVisitor visitors) throws NotLoggedInException {
     PersistenceManager pm = getPersistenceManager();
         //get employee
         Employee emp = pm.getObjectById(Employee.class, empID);

     Appointment newAppoint = new Appointment(subject,
 appointStartDate, appointEndDate, startTime, endTime);
     newAppoint.setVisitors(visitors);
     newAppoint.setEmployee(emp);
         emp.getAppointments().add(newAppoint);

         try {
       pm.makePersistent(emp);
     } finally {
       pm.close();
     }
   }

   private PersistenceManager getPersistenceManager() {
     return PMF.get().getPersistenceManager();
   }

 }

 //Employee Bean
 @PersistenceCapable(identityType = IdentityType.APPLICATION,
 detachable = true)
 public class Employee implements IsSerializable, IValidatable {

   @PrimaryKey
   @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
   @Extension(vendorName=datanucleus, 

[appengine-java] Re: JDO: Null parent on some children objects

2010-08-27 Thread Frederik Pfisterer
Hi,

the problem is this line:
owner = new First();

Beware that the only way you should ever store a Second object is:
myFirstObject.getList().add(mySecondObject);
pm.makePersistent(myFirstObject);

since Second.owner is mapped it's automatically populated by the
persistance manager.

Hope this helps,
Fred


On 26 Aug., 17:38, cghersi cristiano.ghe...@gmail.com wrote:
 Hi Diego,

 thank you but unfortunately I strictly followed what stated in that
 page, and the result is the problem I posted!!

 Any other hint?

 Thank you very much,
 Best
 Cghersi

 On 26 Ago, 16:09, Diego Fernandes penet...@gmail.com wrote:

  Hi,
  i may find something 
  herehttp://code.google.com/intl/en/appengine/docs/java/datastore/relation...

  []'s
  Diego

  On 26 ago, 04:42, cghersi cristiano.ghe...@gmail.com wrote:

   Hi everybody,

   I'm struggling with a strange problem with JDO.
   I've got two PersistenCapable classes, one having a Collection of
   objects of the second, something like this:

   class First {
   �...@persistent
   �...@primarykey
    Long id;

   �...@persistent(mappedby=owner)
    ArrayListSecond list = new ArrayListSecond();

    ArrayListSecond getList() {
     if (list == null)
      list=new ArrayListSecond();
     return list;
    }

   ...

   }

   class Second {
   �...@persistent
   �...@primarykey
    Key id;

   �...@persistent
    First owner;

    First getOwner() {
     if (owner==null)
      owner = new First();
     return owner;

    ...

   }

   In another class I need to print the owner of all my First objects, so
   I do:
   First obj = ...;
   ArrayListSecond list = obj.getList();
   for (Second s : list) {
    System.out.println(s.getOwner());

   }

   In this loop, I find some Second object having null owner, and I
   cannot understand why.
   Now I have several questions about my data modelling:
   1) Do I need to mark any field with (defaultFetchGroup = true)
   annotation?
   2) Does the check on null object (e.g. if (owner==null) owner = new
   First();) in the getter methods results in any strange behavior?
   3) Does the assignment on definition of objects (e.g.
   ArrayListSecond list = new ArrayListSecond();) results in any
   strange behavior?
   4) Do I need to add any other annotation to owner field of Second
   class?

   Thank you very much for your help!!
   Best regards
   cghersi

-- 
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: The title of email displays wrongly in localization

2010-08-27 Thread Peter Ondruska
Have try encoding to quoted printable this way:

msg.setSubject(MimeUtility.encodeText(_subject, UTF-8, Q));

http://groups.google.com/group/google-appengine-java/browse_thread/thread/7479beb80a97992f/36156bbdee1b9fa2?lnk=gstq=encode+subject#36156bbdee1b9fa2

On Aug 26, 3:23 am, Tony genesoft...@gmail.com wrote:
 Hello,

 I have a problem to dispay the title of email if it includes Chinese.
 I tried:
 [1]
 ...
 String title = 测试标题;
 message.setSubject(title);
 ...
 And
 [2]
 ...
 String title = 测试标题;
 title = MimeUtility.encodeText(title);
 message.setSubject(title);
 ...

 Both titles are displayed as ?. If the program works in
 Tomcat (without GAE/GWT), the 2nd is ok.

 Please let me know, if you have any idea to handle the title
 localization issue?

 Thanks in advance,
 Tony

-- 
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: Best practice modeling a 1:n user-relationship with List properties

2010-08-27 Thread Frederik Pfisterer
Hi,

my recommendation would be to use ListString . In your reasoning for
query 2 be aware of the lazy loading that JDO performs in the
background to retrieve the related objects.
Query one and two are similar (if nickname is a field of MyAppUser):
Query q = pm.newQuery(MyAppUser.class);
q.setFilter(userKey == userKeyParam);
q.declareParameters(String userKeyParam);

q.execute(appUserKey);

will give you a listMyAppUser of his friends.

Hope this helps,
Fred

On 24 Aug., 12:53, androidDeveloper stepmas...@googlemail.com wrote:
 Hi all,

 I am trying to model a 1:n relationship between different myAppUser
 instances on Google App Engines Datastore. MyAppUser has a reference
 to 0...n other users (friends).
 MyAppUser is currently defined as showed below:

 class MyAppUser {
 @PrimaryKey
 @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
 @Extension(vendorName = datanucleus, key = gae.encoded-pk, value =
 true)
 private String primaryKey;

 @Persistent
 private User user

 @Persistent
 private ListUser friendsList;  Or alternative private ListString
 friendsList;
 ...

 }

 I have two queries:
 Query 1: I want to select all MyAppUsers where a specific User is in
 the friendsList.
 Query 2: I want to get all nicknames of the friends of a specific
 MyAppUser. This can be achieved by getting a MyAppsUser by id and then
 calling for each user user.getNickname().

 Question query 1: Is a query with a filter on ListUser friendsList
 faster or slower than a query with a filter on ListString
 friendsList or is it equal?

 For query 2 I would say that a ListUser friendsList is faster,
 because I have direct access to the nicknames. With only the id stored
 in the friendsList, I have to make another query for each friend in
 the list to get his nickname.

-- 
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] [Perhaps OT] Oracle vs. Google : Java still a viable language?

2010-08-27 Thread Shawn Brown
 Motivation: I am at the early stages of implementing a web app on GAE
 using Java, but if I need to switch to Python, I shouldn't delay it
 any more.

 Anyway, what do you guys think?

IANAL but you asked so here goes.  I think you are fine using java on GAE.

My guess is that since appengine is a derivative of OpenJDK that the
(SE) patent grant holds for appengine as long as it doesn't implement
new core functionality which the OpenJDK does not.  In such a case, I
don't believe the patent grant holds.  You'd have to read the grant
more closely or an analysis of it to know whether only partially
implementing it carries the grant.  Even if Oracle were to argue
partial implementation does not, I believe the GPL2 combined with a
patent grant for that code means effectively that Oracle can not say
what people do with the GPL2 code, only that new functionality may not
carry the protection.

So, were GAE to fork OpenJDK and implement new core java classes (this
does not mean new classes using java but a re-implementation of java
with new functionality), then it's possible that we may see patent
issues.  Given the issues with Android though, I suspect Google will
stay in the clear and I do not believe the GAE SDK does this.

That said, if you try to take the SDK jars and set up an equivalent of
GAE that runs on your phone (note:  I am not talking about an app on a
phone that connects to GAE, I am talking about *running* a GAE
instance on a mobile phone) then perhaps you may have trouble as
Oracle reserved the rights to mobile devices for non-GPL versions of
Java.  Nobody would or could ever do that I think, and so am sure it
won't ever be an issue.

Don't listen to me though.  Really don't.

Shawn

-- 
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: DatastoreService.getCurrentTransaction() throws NoSuchElementException even after PersistenceManager.currentTransaction().begin()

2010-08-27 Thread Arnold
Thanks Simon.

I think I have all the test jar files that might be needed:
appengine-testing.jar
appengine-api.jar
appengine-api-labs.jar
appengine-api-stubs.jar
appengine-local-runtime.jar

The same failure happens in development mode too in which no test jar
files are needed.

Any more hints appreciated.

Arnold.

On Aug 27, 11:41 am, Simon qila...@gmail.com wrote:
 Check to make sure you have all of the test Jar files in your
 classpath - I remember having this error and I was missing one of them
 (can't remember which one I'm afraid...)

 On Aug 26, 10:38 pm, Arnold arnold.mi...@gmail.com wrote:



  When using JDO persistence manager to begin a transaction,
  DatastoreService().getCurrentTransaction() seems to fail.

  A unit test:
  --
  public class TransactionTest{
      private final LocalServiceTestHelper helper =
          new LocalServiceTestHelper(new
  LocalDatastoreServiceTestConfig());

      @Before
      public void setUp() {
          helper.setUp();
      }

      @After
      public void tearDown() {
          helper.tearDown();
      }

          @Test
          public void test(){
                  PersistenceManager pm = PMF.get().getPersistenceManager();
                  Transaction tx = pm.currentTransaction();
                  try{
                          tx.begin();

  DatastoreServiceFactory.getDatastoreService().getCurrentTransaction();

                          tx.commit();
                  }finally{
                          if(pm.currentTransaction().isActive()){
                                  pm.currentTransaction().rollback();
                          }
                          pm.close();
                  }

          }}

  --

  The test fails with stack trace:
  --
  java.lang.IllegalStateException: java.util.NoSuchElementException
          at
  com.google.appengine.api.datastore.TransactionStackImpl.peek(TransactionSta 
  ­ckImpl.java:
  70)
          at
  com.google.appengine.api.datastore.DatastoreServiceImpl.getCurrentTransacti 
  ­on(DatastoreServiceImpl.java:
  307)
          at TransactionTest.test(TransactionTest.java:37)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at
  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
  39)
          at
  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp 
  ­l.java:
  25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.junit.runners.model.FrameworkMethod
  $1.runReflectiveCall(FrameworkMethod.java:44)
          at
  org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable. 
  ­java:
  15)
          at
  org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.j 
  ­ava:
  41)
          at
  org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.ja 
  ­va:
  20)
          at
  org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
  28)
          at
  org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:
  31)
          at
  org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.ja 
  ­va:
  73)
          at
  org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.ja 
  ­va:
  46)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
          at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
          at
  org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
  28)
          at
  org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:
  31)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
          at
  org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestRe 
  ­ference.java:
  46)
          at
  org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
  38)
          at
  org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestR 
  ­unner.java:
  467)
          at
  org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestR 
  ­unner.java:
  683)
          at
  org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner 
  ­.java:
  390)
          at
  org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunne 
  ­r.java:
  197)
  Caused by: java.util.NoSuchElementException
          at java.util.LinkedList.getFirst(LinkedList.java:109)
          at
  com.google.appengine.api.datastore.TransactionStackImpl.peek(TransactionSta 
  ­ckImpl.java:
  68)
          ... 26 more

  --

  As a result, the example shown here:

 

[appengine-java] Re: Best practice modeling a 1:n user-relationship with List properties

2010-08-27 Thread androidDeveloper
Hi,

be aware of the lazy loading that JDO performs
Question 1: Do we have lazy loading on lists of Core Value Types like
Google account (com.google.appengine.api.users.User) too?

Question 2a:
If a myAppUser has for example 1000 friends. Then with ListString I
would have to read the referenced myAppUser's for each userId in the
list to get the nicknames. To get all nicknames in one query I would
have to put a where condition on the userId of each user and
concatenate the conditions with Or, ||. I read, that a query has a
limit of 30 Ors. So I would have to split the Query in 30-packages.
Is this a good solution or would it be better to hold the nicknames in
a separate denormalized list in myAppUser? (Problem with the
denormalized nickname-list would be, that I would have to update the
list each time a user changes his nickname)

Question 2b:
Would it be too much overhead to read the nicknames in a separate
Query for each userId? Or is this a bad solution because of the
datastore calling overhead?

Question 3:
Is it possible to put a query-filter on a subfield of a Google account
user object (for example the nickname-field)? In my tests I was not
successful...


On 27 Aug., 11:13, Frederik Pfisterer pfiste...@gmail.com wrote:
 Hi,

 my recommendation would be to use ListString . In your reasoning for
 query 2 be aware of the lazy loading that JDO performs in the
 background to retrieve the related objects.
 Query one and two are similar (if nickname is a field of MyAppUser):
 Query q = pm.newQuery(MyAppUser.class);
 q.setFilter(userKey == userKeyParam);
 q.declareParameters(String userKeyParam);

 q.execute(appUserKey);

 will give you a listMyAppUser of his friends.

 Hope this helps,
 Fred

 On 24 Aug., 12:53, androidDeveloper stepmas...@googlemail.com wrote:

  Hi all,

  I am trying to model a 1:n relationship between different myAppUser
  instances on Google App Engines Datastore. MyAppUser has a reference
  to 0...n other users (friends).
  MyAppUser is currently defined as showed below:

  class MyAppUser {
  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  @Extension(vendorName = datanucleus, key = gae.encoded-pk, value =
  true)
  private String primaryKey;

  @Persistent
  private User user

  @Persistent
  private ListUser friendsList;  Or alternative private ListString
  friendsList;
  ...

  }

  I have two queries:
  Query 1: I want to select all MyAppUsers where a specific User is in
  the friendsList.
  Query 2: I want to get all nicknames of the friends of a specific
  MyAppUser. This can be achieved by getting a MyAppsUser by id and then
  calling for each user user.getNickname().

  Question query 1: Is a query with a filter on ListUser friendsList
  faster or slower than a query with a filter on ListString
  friendsList or is it equal?

  For query 2 I would say that a ListUser friendsList is faster,
  because I have direct access to the nicknames. With only the id stored
  in the friendsList, I have to make another query for each friend in
  the list to get his nickname.



-- 
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: [Perhaps OT] Oracle vs. Google : Java still a viable language?

2010-08-27 Thread markvgti
Thanks for sharing your thoughts Shawn. IANAL either :-).

I am worried about not just Java on GAE (though that's the more
immediate concern), but also about Java's future in general. Don't
want to be stuck with a proprietary language that has bad stewardship
and a belligerent, short-sighted, greedy corporate owner.

Also, Java on GAE seems to be a secondary citizen to Python :-)...
that makes me question even more whether I should be learning
Python ;-).

On Aug 27, 2:13 pm, Shawn Brown big.coffee.lo...@gmail.com wrote:
  Motivation: I am at the early stages of implementing a web app on GAE
  using Java, but if I need to switch to Python, I shouldn't delay it
  any more.
  Anyway, what do you guys think?

 IANAL but you asked so here goes.  I think you are fine using java on GAE.

 My guess is that since appengine is a derivative of OpenJDK that the
 (SE) patent grant holds for appengine as long as it doesn't implement
 new core functionality which the OpenJDK does not.  In such a case, I
 don't believe the patent grant holds.  You'd have to read the grant
 more closely or an analysis of it to know whether only partially
 implementing it carries the grant.  Even if Oracle were to argue
 partial implementation does not, I believe the GPL2 combined with a
 patent grant for that code means effectively that Oracle can not say
 what people do with the GPL2 code, only that new functionality may not
 carry the protection.

 So, were GAE to fork OpenJDK and implement new core java classes (this
 does not mean new classes using java but a re-implementation of java
 with new functionality), then it's possible that we may see patent
 issues.  Given the issues with Android though, I suspect Google will
 stay in the clear and I do not believe the GAE SDK does this.

 That said, if you try to take the SDK jars and set up an equivalent of
 GAE that runs on your phone (note:  I am not talking about an app on a
 phone that connects to GAE, I am talking about *running* a GAE
 instance on a mobile phone) then perhaps you may have trouble as
 Oracle reserved the rights to mobile devices for non-GPL versions of
 Java.  Nobody would or could ever do that I think, and so am sure it
 won't ever be an issue.

 Don't listen to me though.  Really don't.

 Shawn

-- 
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: [Perhaps OT] Oracle vs. Google : Java still a viable language?

2010-08-27 Thread Romain Pelisse

 I am worried about not just Java on GAE (though that's the more
 immediate concern), but also about Java's future in general. Don't
 want to be stuck with a proprietary language that has bad stewardship
 and a belligerent, short-sighted, greedy corporate owner.


Well, as long as Red Hat/JBoss stays what it is now, I think Java is safe.
Red Hat has become an important member of the Java community since they
acquired JBoss and they were (I think) one of the first contributors to
OpenJDK. All the products of JBoss rely on Java, so if, at some point,
Oracle tries to really close down Java, my guess is Red Hat will then fork
OpenJDK.

You could definitely argue that Red Hat is yet an other  greedy corporate
owner but it is one that has always understood the importance of openess.

Nonetheless, it seems that Oracle is harming Java and even if Java can
certainly survives it, it's not a good thing anyway.

-- 
Romain PELISSE,
The trouble with having an open mind, of course, is that people will insist
on coming along and trying to put things in it -- Terry Pratchett
http://belaran.eu/

-- 
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: [Perhaps OT] Oracle vs. Google : Java still a viable language?

2010-08-27 Thread markvgti


On Aug 27, 4:54 pm, Romain Pelisse bela...@gmail.com wrote:
 You could definitely argue that Red Hat is yet an other  greedy corporate
 owner but it is one that has always understood the importance of openess.

I don't mind companies making bucket-loads of money just so long as
they don't do it (directly or indirectly) at the expense of the end-
users and developers (by trying to shut down competition by hook or by
crook).

 Nonetheless, it seems that Oracle is harming Java and even if Java can
 certainly survives it, it's not a good thing anyway.

Yeah, I think most would agree that Oracle ownership of Java isn't
good.

Regards,
markVgti

-- 
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: JDO: Null parent on some children objects

2010-08-27 Thread cghersi
Hi Frederik!

Sorry for my ignorance, I tougth that the right way to save a Second
object was:

pm.makePersistent(mySecondObject);
myFirstObject.getList().add(mySecondObject);
pm.makePersistent(myFirstObject);

while if I understood your explanation I don't have to invoke
pm.makePersistent() on mySeconObject, is it?

I also put in all my getter methods a check on null object, in that
way:
class Second {
 @Persistent
 @PrimaryKey
 Key id;
 @Persistent
 First owner;
 @Persistent
 ListString tags;

 First getOwner() {
  if (owner==null)
   owner = new First();
  return owner;
 }

 ListString getTags() {
  if (tags==null)
   tags= new ArrayListString();
  return tags;
 }

 ...
}

Do I have to remove all the check of the type if (obj==null)
obj=new...?

Thank you very much for your help!

Best
cghersi

On 27 Ago, 10:58, Frederik Pfisterer pfiste...@gmail.com wrote:
 Hi,

 the problem is this line:
 owner = new First();

 Beware that the only way you should ever store a Second object is:
 myFirstObject.getList().add(mySecondObject);
 pm.makePersistent(myFirstObject);

 since Second.owner is mapped it's automatically populated by the
 persistance manager.

 Hope this helps,
 Fred

 On 26 Aug., 17:38, cghersi cristiano.ghe...@gmail.com wrote:



  Hi Diego,

  thank you but unfortunately I strictly followed what stated in that
  page, and the result is the problem I posted!!

  Any other hint?

  Thank you very much,
  Best
  Cghersi

  On 26 Ago, 16:09, Diego Fernandes penet...@gmail.com wrote:

   Hi,
   i may find something 
   herehttp://code.google.com/intl/en/appengine/docs/java/datastore/relation...

   []'s
   Diego

   On 26 ago, 04:42, cghersi cristiano.ghe...@gmail.com wrote:

Hi everybody,

I'm struggling with a strange problem with JDO.
I've got two PersistenCapable classes, one having a Collection of
objects of the second, something like this:

class First {
�...@persistent
�...@primarykey
 Long id;

�...@persistent(mappedby=owner)
 ArrayListSecond list = new ArrayListSecond();

 ArrayListSecond getList() {
  if (list == null)
   list=new ArrayListSecond();
  return list;
 }

...

}

class Second {
�...@persistent
�...@primarykey
 Key id;

�...@persistent
 First owner;

 First getOwner() {
  if (owner==null)
   owner = new First();
  return owner;

 ...

}

In another class I need to print the owner of all my First objects, so
I do:
First obj = ...;
ArrayListSecond list = obj.getList();
for (Second s : list) {
 System.out.println(s.getOwner());

}

In this loop, I find some Second object having null owner, and I
cannot understand why.
Now I have several questions about my data modelling:
1) Do I need to mark any field with (defaultFetchGroup = true)
annotation?
2) Does the check on null object (e.g. if (owner==null) owner = new
First();) in the getter methods results in any strange behavior?
3) Does the assignment on definition of objects (e.g.
ArrayListSecond list = new ArrayListSecond();) results in any
strange behavior?
4) Do I need to add any other annotation to owner field of Second
class?

Thank you very much for your help!!
Best regards
cghersi

-- 
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] Security issue with Google account on Gwt-client site

2010-08-27 Thread androidDeveloper
Hi all,

as written in thread
http://groups.google.com/group/google-appengine-java/browse_thread/thread/3033d853fc0a7209/3e56400d7859387d?lnk=gstq=google+account+gwt+client+#3e56400d7859387d

it is not possible to use the Google Account class
(com.google.appengine.api.users.User) on GWT-client site.
A solution would be to create a DTO to transfer the data to the
client.

My Question:
Is it allowed to transfer the data from Google account objects to
client, particularly the userId?

I try to implement some kind of checkSession method, which brings a
Google account to client site if a user is logged in. The Google
account is then stored on client site in a member variable for further
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.



[appengine-java] Datastore Not Persisting Object and No Error That I can find

2010-08-27 Thread Shaun
I have the following code:

public String addBankAccountTransaction(String
lBankAccountTransactionJson) {

log.info(\n\nBankAccountActions::addBankAccountTransaction:start);

GsonBuilder gsonb = new GsonBuilder();
DateDeserializer ds = new DateDeserializer();
gsonb.registerTypeAdapter(Date.class, ds);
GoogleKeyDeserializer gkd = new GoogleKeyDeserializer();
gsonb.registerTypeAdapter(Key.class, gkd);
Gson gson = gsonb.create();

BankAccountTransaction lBankAccountTransaction =
gson.fromJson(lBankAccountTransactionJson,
BankAccountTransaction.class);

PersistenceManager pm = PMF.getSecond().getPersistenceManager();

Transaction tx = pm.currentTransaction();

try {
tx.begin();
pm.makePersistent(lBankAccountTransaction);
tx.commit();

log.info(BankAccountActions::addBankAccountTransaction:lBankAccountTransaction.getKey::Committed
transction);
} catch (Exception e) {

log.info(BankAccountActions::addBankAccountTransaction:Exception 
+ e.getStackTrace());
} finally {
if (tx.isActive()) {

log.info(BankAccountActions::addBankAccountTransaction:lBankAccountTransaction.getKey::transction
FAILED!);
tx.rollback();
}
pm.close();
}


log.info(BankAccountActions::addBankAccountTransaction:lBankAccountTransaction.getKey()
 + lBankAccountTransaction.getKey());

log.info(BankAccountActions::getBankAccounts:end\n\n);
return ok;
}

It throws no error, but the makePersistent doesn't seem to complete/
work and the key is subsequently null and it doesn't show up in the
datastoreviewer so I assume it's not there. Maybe I don't have logging
setup correctly, my logging.properties looks like:

java.util.logging.ConsoleHandler.formatter =
java.util.logging.SimpleFormatter

# Set the default logging level for INFO loggers to WARNING
.level = INFO

# Set the default logging level for ORM, specificFINEy, to INFO
DataNucleus.JDO.level=INFO
DataNucleus.Persistence.level=FINE
DataNucleus.Cache.level=INFO
DataNucleus.MetaData.level=INFO
DataNucleus.General.level=INFO
DataNucleus.Utility.level=INFO
DataNucleus.Transaction.level=FINE
DataNucleus.Datastore.level=FINE
DataNucleus.ClassLoading.level=INFO
DataNucleus.Plugin.level=INFO
DataNucleus.ValueGeneration.level=INFO
DataNucleus.Enhancer.level=INFO
DataNucleus.SchemaTool.level=INFO

Any ideas why this isn't saving and why I don't see any errors? I am
using SDK 1.3.6. 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] Re: Security issue with Google account on Gwt-client site

2010-08-27 Thread Uwe Maurer
The User object contains just the email address of the user.
Just send it to the client in a String and null if the user is not
logged in.
Then you can just check with (username != null) if the user is logged
in.

Uwe


On Aug 27, 6:25 pm, androidDeveloper stepmas...@googlemail.com
wrote:
 Hi all,

 as written in 
 threadhttp://groups.google.com/group/google-appengine-java/browse_thread/th...

 it is not possible to use the Google Account class
 (com.google.appengine.api.users.User) on GWT-client site.
 A solution would be to create a DTO to transfer the data to the
 client.

 My Question:
 Is it allowed to transfer the data from Google account objects to
 client, particularly the userId?

 I try to implement some kind of checkSession method, which brings a
 Google account to client site if a user is logged in. The Google
 account is then stored on client site in a member variable for further
 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.



[appengine-java] How to debug blobstore uploads with 405

2010-08-27 Thread tempy
Hello all,

I am trying to upload to the blobstore from an installed c# client,
not a browser.  So far, I've only tried the development server... I
can see in the datastore viewer that the blobs are being correctly
created because there are corresponding blobinfo objects that
correctly reflect the uploaded data, but my client gets a 405 response
from the blobstore and my success url never gets invoked.  How does
one go about debugging this?  I don't see any kind of output from the
blobstore on the eclipse console, so I'm not sure where to start.

Thanks,
Mike

-- 
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 save child object in one-to-many relationship

2010-08-27 Thread hampole
Thanks for the info. I looked at the issue and many other people
having problem of saving child object in a one-to-many relation. I am
new to this and I don't understand completely. Is there any work-
around to save a child object. If anyone can show me an example, I
appreciate. This is really frustrating as this is basic functionality
in any relational data. In my case, Employee object already exists and
I want to create a new appointment and associate with the employee
object. If there is a different way of doing this, please help. This
has taken quite a lot of time and if this is not available in GWT, I
don't think I can use Google apps for the development of our
application. I appreciate any help.

Thanks,
Ravi

On Aug 27, 1:51 am, Frederik Pfisterer pfiste...@gmail.com wrote:
 Your problem seems to be related to this open gwt 
 issue:http://code.google.com/p/google-web-toolkit/issues/detail?id=4976

 Please star the issue to raise its attention. The workaround is not
 using 1:n relationships with GWT + GAE + JDO.

 Cheers,
 Fred

 On 26 Aug., 23:12, hampole rhamp...@gmail.com wrote:

  I am trying to develop GAE application. I am using the latest GWT
  SDK(2.0.4) AND App Engine SDK(1.3.6) on Eclipse3.4. I am having
  problem insavinga childobjectAppointment and the parentobject
  is Employee. Each Employee has many appointments and and each
  appointment has one employee associated with. I have pasted the Client
  code and the server code here. Please help and see what I am missing
  here. I tried many different ways without success. When I retrieve the
  appointments, the employee is always null. I appreciate any help or
  some example that I can try. Thanks.

  //Client code
  public class AppointmentCreateWidget extends Composite {

          private static AppointmentCreateWidgetUiBinder uiBinder = GWT
                          .create(AppointmentCreateWidgetUiBinder.class);

          interface AppointmentCreateWidgetUiBinder extends
                          UiBinderWidget, AppointmentCreateWidget {
          }

          @UiField Button btnSaveAppointment;
          @UiField TextBox tbxSubject;
          @UiField ListBox lbxRoom;
          @UiField ListBox lbxHost;
          @UiField DateBox dbAppointStartDate;
          @UiField DateBox dbAppointEndDate;
          @UiField ListBox lbxStartTimeHr;
          @UiField ListBox lbxEndTimeHr;
          @UiField ListBox lbxStartTimeMi;
          @UiField ListBox lbxEndTimeMi;

          private final AppointmentServiceAsync appointService =
  (AppointmentServiceAsync) GWT.create(AppointmentService.class);
      private final ListVisitor visitors = new ArrayListVisitor();

          public AppointmentCreateWidget() {
                  initWidget(uiBinder.createAndBindUi(this))
      }

          @UiHandler(btnSaveAppointment)
          void onClick(ClickEvent e) {
                  addAppointment();
          }

      private void addAppointment() {
              String subject = tbxSubject.getText().toUpperCase().trim();
              Date startdate = dbAppointStartDate.getValue();
              Date enddate = dbAppointEndDate.getValue();
              String starttime =
  lbxStartTimeHr.getValue(lbxStartTimeHr.getSelectedIndex()).toString()
  +
                  lbxStartTimeMi.getValue(lbxStartTimeMi.getSelectedIndex());
              String endtime =
  lbxEndTimeHr.getValue(lbxEndTimeHr.getSelectedIndex()).toString() +
                  lbxEndTimeMi.getValue(lbxEndTimeMi.getSelectedIndex());
              String room =
  lbxRoom.getValue(lbxRoom.getSelectedIndex()).toString();
              String key = lbxHost.getValue(lbxHost.getSelectedIndex());
              DateTimeFormat dateFormat = DateTimeFormat.getShortDateFormat();

              try {
                      createAppointment(subject, startdate, enddate, 
  starttime,
  endtime, key, visitors);
              }
              catch(Exception ex) {
                  Window.alert(Save Appointment failed:  + ex.toString());
              }
          }

          private void createAppointment(String subject, Date startdate, Date
  enddate, String starttime, String endtime, String empID, ListVisitor
  visitor) {
              appointService.addAppointment(subject,startdate, enddate,
  starttime, endtime, empID, visitor, new AsyncCallbackVoid() {
                public void onFailure(Throwable error) {
                          Window.alert(Unable to create Appointment. +
  error.getMessage());
                }
                public void onSuccess(Void ignore) {
                }
              });
          }

  }

  //ServiceImpl
  public class AppointmentServiceImpl extends RemoteServiceServlet
  implements AppointmentService {
    /**
           *
           */
    private static final long serialVersionUID = 1L;

    public void addAppointment(String subject, Date appointStartDate,
  Date appointEndDate, String startTime, String endTime, String empID,
  ListVisitor visitors) throws 

Re: [google-appengine] Re: Retrying transactions

2010-08-27 Thread Robert Kluin
Hi Jeff,
  If you use Python it will retry 3x.

The datastore uses optimistic locking and retries for transactions. If
the transaction prepared by the function cannot be committed,
run_in_transaction() calls the function again, retrying the
transaction up to 3 times. (To use a different number of retries, use
db.run_in_transaction_custom_retries().) Because the transaction
function may be called more than once for a single transaction, the
function should not have side effects, including modifications to
arguments.

http://code.google.com/appengine/docs/python/datastore/functions.html#run_in_transaction

Not sure about Java, but they seem to keep things more-or-less consistent.

Robert







On Thu, Aug 26, 2010 at 23:41, Jeff Schwartz jefftschwa...@gmail.com wrote:
 Thanks but I wasn't specifically asking about tasks but rather transactions
 in general. I'd like to know about retries, when they are done  when they
 aren't. I'd also like to know if there is any detailed documentation on the
 subject.

 On Thu, Aug 26, 2010 at 7:37 PM, Jan Z/ Hapara jan.zawad...@gmail.com
 wrote:

 FWIW we've seen tasks with 23+ retries and a  re-queue time of 19+hrs.

 Failure rate: depends on what you mean.  Task queue can kill your
 tasks (and requeue them) on it's own, plus there is the failure rate
 of other GAE services.

 I'm not sure if we've got a unique use-case on our hands (I think not)
 but we're seeing task queue failure rates of 30-90% for non-trivial
 loads (2-5k tasks being queued up).  Failure in this case means a
 retry force by the queue manager - tasks do eventually complete, it
 might just take a lot longer than expected.

 J

 On Aug 27, 10:58 am, Jeff jefftschwa...@gmail.com wrote:
  When a transaction fails because of contention is it automatically
  retried and if it is how many times will it retry? Also, can you point
  me to any docs that detail this  transaction failures in general?
  Thanks in advance.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.




 --
 --
 Jeff

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] How do I use get_serving_url correctly?

2010-08-27 Thread Nickolas Daskalou
Ikai, is there any way of doing this asynchronously (like URLFetch fetch()
calls)?

Eg: (copied mostly from
http://code.google.com/appengine/docs/python/urlfetch/asynchronousrequests.html
)

from google.appengine.api import images

# ...

blob_keys = [..., ..., ..]
blob_key_serving_urls = []
size = ...
crop = ...

def handle_result(rpc):
  url = rpc.get_result()
  blob_key_serving_urls.append(url)

# Use a helper function to define the scope of the callback.
def create_callback(rpc):
  return lambda: handle_result(rpc)

rpcs = []
for blob_key in blob_keys:
  images.create_rpc()
  rpc.callback = create_callback(rpc)
  images.make_get_serving_url_call(rpc, blob_key, size, crop)
  rpcs.append(rpc)

# ...

for rpc in rpcs:
  rpc.wait()

# blob_key_serving_urls should now contain the serving URLs.

Or should we add this as a feature request?

Nick


On 27 August 2010 10:56, Ikai L (Google) ika...@google.com wrote:

 Yes, you can cache the result. In practice, subsequent calls of
 get_serving_url on the same blob should be faster, but if you have more new
 blobs than old ones on a page it can be slow. The resulting URL only becomes
 invalid if the blob is deleted.


 On Tue, Aug 24, 2010 at 1:53 PM, Flips p...@script-network.com wrote:

 Hi,

 how do I use get_serving_url correctly if I'd like to host a gallery
 of 28 pictures? I currently fetch all blob_keys and call 28 times the
 get_serving_url method to get my image urls. But this attempt is
 really slow (about 12 seconds). Would it be smarter to call
 get_serving_url if the blob has been created and store the image url
 in datastore?

 Best Regards
 Philip

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.




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

  --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Detect Mobile Phone

2010-08-27 Thread Filippo De Luca
Yes it is true. Whether it is worth depends on the application aim. A
good compromise can be a lightweight wurfl api without the LD
algoritm. And a trie in substitution to RIS.

On Aug 27, 12:11 am, prgmratlarge yossiele...@gmail.com wrote:
 Yes, but the CPU required to do a lookup is simply not worth it.
 Remember, every time a (new) user hits the site you do a lookup. It
 can add up very quickly.

 On Aug 26, 9:07 am, Filippo De Luca dl.fili...@filosganga.it wrote:



  Hi,
  I'm aWURFLapi maintainer. The issue should be due to the GAE size
  limit. A simple workaround may be split thewurflxml file in several
  little file, one root and many patches. I will do this utility
  available for the GAE community.

  On Aug 23, 10:46 pm, moissinac jcmoissi...@gmail.com wrote:

   I've made some tests withWURFL(from sourceforge)
   It works very well on my development platform
   But it fails on GAE due to the size limit:WURFLuses a huge XML file
   and GAE fails to open the compressed version of the file
   For now, I have no time to resolve this issue until end of september

   On 23 août, 21:10, Ikai L (Google) ika...@google.com wrote:

Can you use the user-agent?

On Sat, Aug 21, 2010 at 11:12 PM, prgmratlarge 
yossiele...@gmail.comwrote:

 Need a quick and easy way to detect mobile phones from my app, that
 won't add too much performance overhead. Any suggestions?

 --
 You received this message because you are subscribed to the Google 
 Groups
 Google App Engine group.
 To post to this group, send email to 
 google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
  e...@googlegroups.com
 .
 For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.

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

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Google Apps Full Accounts

2010-08-27 Thread Erik Karulf
Hi All,

Our domain was recently upgraded to the Google Apps Full Account
system. However, when I try and login to Google App Engine, I get the
following error:

URL: 
https://appengine.google.com/_ah/login?continue=https://appengine.google.com/a/example.com/
Body:
Error: Server Error
The server encountered an error and could not complete your request.
If the problem persists, please report your problem and mention this
error message and the query that caused it.

This persists for other users in my domain as well.

Thanks!

-Erik

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: No mobile phone

2010-08-27 Thread James13M
I did manage to get manually approved. My thanks to everyone that
helped.

On Aug 26, 8:45 pm, Robert Kluin robert.kl...@gmail.com wrote:
 Google voice will not work to verify an account.  Tried it, the text
 never comes through.  But it does work to send and receive texts in
 general.

 Robert

 On Thu, Aug 26, 2010 at 16:32, James13M jamesmaje...@gmail.com wrote:
  Acknowledged. Further research has given me another tool to use to
  send and receive SMS online. I have yet to verify its functionality,
  but it is simple enough to use and you do not need a cell phone or
  mobile phone. It is called Google Voice. My problem in testing it is
  that I do not know many people with cell phones that bother to use the
  texting feature.

  On Aug 23, 7:04 pm, Ikai L (Google) ika...@google.com wrote:
  Use that link to report issues with SMS verification. In your case, enter 
  in
  the description that you do not have a mobile phone and you will be 
  manually
  verified. We should probably rename that form to manual verification
  rather than SMS verification.

  On Sat, Aug 21, 2010 at 7:46 PM, James13M jamesmaje...@gmail.com wrote:
   That link is for reporting a problem in receiving the SMS (I still do
   not know what that is) on your cell phone or mobile phone.

   On Aug 19, 7:42 pm, Geoffrey Spear geoffsp...@gmail.com wrote:
There's a link athttp://groups.google.com/group/google-appengineyou
can use to get your account verified without SMS.

On Aug 19, 8:03 am, James13M jamesmaje...@gmail.com wrote:

 I can not get past the SMS (whatever that is) and the requirement for
 a cell phone. I do not want a cell phone as I have no use for it. Is
 there a way to get past that requirement or is Google subsidizing the
 cell phone companies?

   --
   You received this message because you are subscribed to the Google Groups
   Google App Engine group.
   To post to this group, send email to google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine?hl=en.

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

  --
  You received this message because you are subscribed to the Google Groups 
  Google App Engine group.
  To post to this group, send email to google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to 
  google-appengine+unsubscr...@googlegroups.com.
  For more options, visit this group 
  athttp://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Paypal / Payment integration and domain related questions for GAE

2010-08-27 Thread Andrius A
1) yes, try to google and you will find examples

2) yes, you can use you own domains

3) unfortunatly this is due to ssl limitations. Still your users will be
able to acces through your domain but browser will show that certificate is
untrasted. With https you can use only appspot.com subdomains.

On 27 Aug 2010 01:10, Divkis divick.kish...@gmail.com wrote:

Hi,
   I am trying to evaluate GAE, if it suits my purpose.

One of the requirements that I have is that I want integration with a
couple of payment gateways, the top priority being paypal.

1. Could someone please help me answer if it is even possible to
integrate paypal and/or some other payment gateway with GAE?

2. The other question that I have is if I have a domain say xyz.com,
then users accessing http://www.xyz.com will be directed to my
application deployed on GAE?

3. Having looked at Wikipedia entry for GAE,
http://en.wikipedia.org/wiki/Google_App_Engine,
section 'Restrictions', it says
SSL/HTTPS is only available via *.appspot.com domains and not via
Google Apps Domains

I am not sure what this really means and what implication does it
have?

Thanks in advance,
Divkia

--
You received this message because you are subscribed to the Google Groups
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to
google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
.
For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: *.appspot.com certificate chain in Chrome, Safari and IE

2010-08-27 Thread Carlos Rodrigues
The Equifax certificate is there, but the problem is with the
intermediate CA's certificate (Google's), which isn't found.

If it works for you on Windows 7, maybe you have Google's CA
certificate installed. This would certainly make the error go away,
but we can't ask users to do this (because most won't).

@James: This is not a limitation of wildcard certificates because it
works on Firefox but also with all browsers I've tested on Windows XP
and OS X (including Safari, which shows the error on Windows 7).

Best regards,

On Aug 27, 2:36 am, Matthew Blain matthew.bl...@google.com wrote:
 This works for me on Windows 7. It's possible that the root
 certificates on your Windows machine are somehow missing the Equifax
 Secure Certificate Authority root certificate (also sometimes listed
 as GeoTrust)? Have you edited your list? I see a suggestion online to
 also check Windows Updates to see if there's a certificate update,
 though I believe this is not a recent CA.

 --Matthew

 On Aug 26, 10:45 am, Robert Kluin robert.kl...@gmail.com wrote:

  Interesting.  You are right, I probably checked using a XP vm not a Win 7 
  vm.

  On Thu, Aug 26, 2010 at 10:44, Carlos Rodrigues cefrodrig...@gmail.com 
  wrote:
   BTW, this is not a problem exclusive to GAE. The certificate for
   code.google.com also seems to have changed recently and I just got a
   warning from TortoiseSVN that the new certificate cannot be validated
   because the certificate chain is incomplete.

   Best regards,

   On Aug 26, 3:42 pm, Carlos Rodrigues cefrodrig...@gmail.com wrote:
   Since the problem only happens with browsers that rely on Windows'
   certificate infrastructure, the version of Windows matters.

   I've tested with IE 8 on Windows 7 and Windows Server 2008 and the
   problem occurs;
   I've also tested with IE 7 on Windows XP and Windows Server 2003 and
   the problem does not occur;

   I did not test with Windows Vista.

   It seems that older versions of Windows follow the certificate chain
   (by downloading it from somewhere), while the more recent versions
   only follow it if the webserver itself provides the intermediate CA's
   certificate (as I said, I've tested with other sites that use
   intermediate CAs and they show no errors - because the intermediate
   CA's certificate is being provided by Apache using the option I
   mentioned before).

   Best regards,

   On Aug 25, 10:19 pm, Robert Kluin robert.kl...@gmail.com wrote:

I only get a certificate error if I go tohttps://test.xx.appspot.com.  
I do not get errors going tohttps://xx.appspot.com.

I tested with IE and Chrome and Windows.

Robert

On Wed, Aug 25, 2010 at 05:27, Carlos Rodrigues 
cefrodrig...@gmail.com wrote:
 Hi again,

 Any ideas? This is a show-stopper as far as secure applications go...

 Best regards,

 On Aug 23, 12:39 pm, Carlos Rodrigues cefrodrig...@gmail.com wrote:
 Hi all,

 I'm developing a small application on GAE that requires HTTPs, 
 however
 I'm having some trouble with the *.appspot.com certificate.

 O Chrome, Safari and IE on Windows I get a certificate validation
 error. This error appears to be related to the certificate 
 validation
 path, because the topmost authority is Google Internet Authority 
 and
 show as Not found.

 On Firefox there is no error, and the certificate chain correctly
 shows Equifax as the root CA and Google Internet Authority as an
 intermediate CA.

 On the Mac both Firefox and Safari work without showing any errors.

 Is there a way around this? I can't expect users to trust the
 application if they get a certificate error on Windows in every
 browser except Firefox.

 So a summary of tested browsers:

   * Internet Explorer 8 (Windows): error
   * Safari (Windows): error
   * Safari (OS X): OK
   * Chrome (Windows): error
   * Firefox (Windows): OK
   * Firefox (OS X): OK

 It appears that browsers which use the integrated certificate
 infrastructure on Windows are affected, and others are not.

 I know that Windows supports intermediate CAs because I've tested 
 it.
 But it seems to require that the website itself provides the
 intermediate CAs certificate (for example, on Apache this would be 
 the
 SSLCertificateChainFile /path/to/intermediate-ca.crt option).

 Google App Engine does not appear to do this.

 Best regards,
    Carlos Rodrigues

 --
 You received this message because you are subscribed to the Google 
 Groups Google App Engine group.
 To post to this group, send email to 
 google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to 
 google-appengine+unsubscr...@googlegroups.com.
 For more options, visit this group 
 athttp://groups.google.com/group/google-appengine?hl=en.

   --
   You received this message because you are subscribed to the 

[google-appengine] Re: *.appspot.com certificate chain in Chrome, Safari and IE

2010-08-27 Thread Carlos Rodrigues
Sorry, you are right. The problem is that the Windows 7 certificate
store does not have the Equifax root certificate out of the box (on
Windows XP it does). The number of root certificates included with
Windows 7 out of the box is actually quite low.

The machines where I tested this and got an error (Windows 7 and 2008)
are fully updated (including the root certificates update). However
they are behind a proxy server, and maybe the root certificates update
doesn't work over a proxy server. I manually installed the root
certificates update again (http://www.microsoft.com/downloads/en/
confirmation.aspx?
familyId=e4f9b573-66d7-4dda-95d5-26c7d0f6c652displayLang=en) with the
machine connected directly to the internet and it populated the
certificate store with the missing root certificates.

I guess this is still a problem, but only for users that do not update
or that are behind HTTP proxy servers (corporate users, mostly).

Best regards,

On Aug 27, 10:13 am, Carlos Rodrigues cefrodrig...@gmail.com wrote:
 The Equifax certificate is there, but the problem is with the
 intermediate CA's certificate (Google's), which isn't found.

 If it works for you on Windows 7, maybe you have Google's CA
 certificate installed. This would certainly make the error go away,
 but we can't ask users to do this (because most won't).

 @James: This is not a limitation of wildcard certificates because it
 works on Firefox but also with all browsers I've tested on Windows XP
 and OS X (including Safari, which shows the error on Windows 7).

 Best regards,

 On Aug 27, 2:36 am, Matthew Blain matthew.bl...@google.com wrote:

  This works for me on Windows 7. It's possible that the root
  certificates on your Windows machine are somehow missing the Equifax
  Secure Certificate Authority root certificate (also sometimes listed
  as GeoTrust)? Have you edited your list? I see a suggestion online to
  also check Windows Updates to see if there's a certificate update,
  though I believe this is not a recent CA.

  --Matthew

  On Aug 26, 10:45 am, Robert Kluin robert.kl...@gmail.com wrote:

   Interesting.  You are right, I probably checked using a XP vm not a Win 7 
   vm.

   On Thu, Aug 26, 2010 at 10:44, Carlos Rodrigues cefrodrig...@gmail.com 
   wrote:
BTW, this is not a problem exclusive to GAE. The certificate for
code.google.com also seems to have changed recently and I just got a
warning from TortoiseSVN that the new certificate cannot be validated
because the certificate chain is incomplete.

Best regards,

On Aug 26, 3:42 pm, Carlos Rodrigues cefrodrig...@gmail.com wrote:
Since the problem only happens with browsers that rely on Windows'
certificate infrastructure, the version of Windows matters.

I've tested with IE 8 on Windows 7 and Windows Server 2008 and the
problem occurs;
I've also tested with IE 7 on Windows XP and Windows Server 2003 and
the problem does not occur;

I did not test with Windows Vista.

It seems that older versions of Windows follow the certificate chain
(by downloading it from somewhere), while the more recent versions
only follow it if the webserver itself provides the intermediate CA's
certificate (as I said, I've tested with other sites that use
intermediate CAs and they show no errors - because the intermediate
CA's certificate is being provided by Apache using the option I
mentioned before).

Best regards,

On Aug 25, 10:19 pm, Robert Kluin robert.kl...@gmail.com wrote:

 I only get a certificate error if I go 
 tohttps://test.xx.appspot.com.  I do not get errors going 
 tohttps://xx.appspot.com.

 I tested with IE and Chrome and Windows.

 Robert

 On Wed, Aug 25, 2010 at 05:27, Carlos Rodrigues 
 cefrodrig...@gmail.com wrote:
  Hi again,

  Any ideas? This is a show-stopper as far as secure applications 
  go...

  Best regards,

  On Aug 23, 12:39 pm, Carlos Rodrigues cefrodrig...@gmail.com 
  wrote:
  Hi all,

  I'm developing a small application on GAE that requires HTTPs, 
  however
  I'm having some trouble with the *.appspot.com certificate.

  O Chrome, Safari and IE on Windows I get a certificate validation
  error. This error appears to be related to the certificate 
  validation
  path, because the topmost authority is Google Internet 
  Authority and
  show as Not found.

  On Firefox there is no error, and the certificate chain correctly
  shows Equifax as the root CA and Google Internet Authority as an
  intermediate CA.

  On the Mac both Firefox and Safari work without showing any 
  errors.

  Is there a way around this? I can't expect users to trust the
  application if they get a certificate error on Windows in every
  browser except Firefox.

  So a summary of tested browsers:

    * Internet Explorer 8 (Windows): error
    * Safari (Windows): error
 

[google-appengine] Re: FTP support to download the assets from WEB-INF folder

2010-08-27 Thread Geoffrey Spear


On Aug 26, 11:32 pm, anurag anuraggupta@gmail.com wrote:
 Hi Geoffrey,
 To get the server data that resides in WEB-INF folder i have to write script
 to download it?
 If this the only one way then I will do the same, I was thinking may be
 there will be some tool to get that.
 I didn't get source control. It is any tool,please provide me some link to
 go through that.

http://mercurial.selenic.com/
http://git-scm.com/
http://subversion.tigris.org/

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: getServingUrl slow itself?

2010-08-27 Thread Geoffrey Spear
Anyone who has the URL can get the image.  If you need to restrict
access when the correct URL is given, you can't really use Blobstore;
store your images in the datastore and use a handler to serve them
with code that restricts who it will serve to.

On Aug 26, 11:41 pm, gops patelgo...@gmail.com wrote:
 can i restrict who can see the image or who can not ?

 i know url is not easily guessable , but can anyone by chance can have
 that image ?

 On Aug 27, 5:22 am, Ikai L (Google) ika...@google.com wrote:



  Only the initial call to getServingUrl should be slow. Subsequent calls
  should be faster. You should be able to cache the URL - I don't believe it
  should change.

  On Thu, Aug 26, 2010 at 4:02 PM, mathijs math...@gmail.com wrote:
   Hi,

   We have been starting to use getServingUrl onhttp://www.appbrain.com/
   where we have very many pages little icons. (for instance about 30 on
   the homepage).
   Since we implemented the getServingUrl calls for these icons, the logs
   show that the homepage now takes 3000ms (3 seconds!) to be processed
   by appengine. It seems that the getServingUrl calls itself are very
   slow.
   We are now trying to cache these calls, but are unsure how long these
   URLs exist. Can we assume that as long as we don't delete the blob,
   the same URL will always be valid, or can it change?

   Best regards,

   Mathijs

   --
   You received this message because you are subscribed to the Google Groups
   Google App Engine group.
   To post to this group, send email to google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
e...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine?hl=en.

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

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Channel API - accessing from web page not hosted on app engine

2010-08-27 Thread Juha
I would like to create a Javascript that:
- Could be included on any web page
- Would connect to my App Engine application and retrieve data via the
Channel API

For example
- 127.0.0.1:8000 Regular web server, hosting an example web page
- 127.0.0.1:80 App Engine dev server with the channels and with the
script

To my understanding this should be possible, as my script and the
Channel API Javascripts are hosted on App Engine. So cross-site
limitations should not be an issue. Correct?

With the current dev-channel-js.js that comes with the SDK I can't get
this working. The dev-channel-js.js does not explicitly specify the
hostname (and port) of the App Engine dev server. Instead just
specifies the url (/_ah/channel/).  This means that in my example
case, it tries to connect to http://127.0.0.1:8000/_ah_channel/dev
[...]

Is this a use case that will be supported on production, once the
channel API becomes publicly available?

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Your Suggestions Comments on Cascading Deletes Across Potentially Thousands of Entities

2010-08-27 Thread Jeff Schwartz
Hi all,

I'm developing an application that has the following datastore models:

StatusUpdate - members' distributed status
StatusUpdateLike - members can mark a StatusUpdate as liked
StatusUpdateLikeCounter - counter of # of members who like a StatusUpdate
DistributionIndex - has a list property of member ids used to syndicate
content to subscribed members
Comment - a comment made by a member about a StatusUpdate
CommentLike - members can mark a Comment as liked
CommentLikeCounter - counter of # of members who like a Comment

A StatusUpdate can have many Comments but there is no entitygroup
relationship between them.
A StatusUpdate can have many DistributionIndexes and both form an enitty
group where StatusUpdate is the root of the hierarchy and
DistributionIndexes are the children.
A StatusUpdate can have many StatusUpdateLikes but there is no entitygroup
relationship between them.
A StatusUpdate can have many StatusUpdateLikesCounters (sharded) but there
is no entitygroup relationship between them.
A Comment can have many CommentLikes but there is no entitygroup
relationship between them.
A Comment can have many CommentLikeCounters (sharded) but there is no
entitygroup relationship between them.

When a StatusUpdate is deleted by the member who created it I am thinking I
can approach 'clean up' in one of 2 ways  I would like your opinions on
both:

1) I can just delete the StatusUpdate and its child DistributionIndexes and
leave all the other entities in place in the datastore. This would not
impact the application because the StatusUpdate is the root of its logical
hierarchy and without it all the other entities are ignored. Depending on
the popularity of the application leaving these entities in place could
result in the datastore maintaining thousands of orphaned entities.

2) I can go through the logical hierarchy and cascade deletion. Depending on
the popularity of the application this could require the deletion of
thousands of records. Though everything would be done using keys and batch
deletes, deleting thousands of records couldn't be done in-process and would
require kicking of tasks to perform the cascading deletes.

3) I could use a combination of the above. When a member deletes a
StatusUpdate I could delete it and its associated DistributionIndexes and
create a new entity that would serve as a marker for the deleted
StatusUpdate. I could then schedule a task to kick off periodically that
would query for the marker entities. If found I could kick off tasks to do
the clean up out of process.

The simplicity of approach #1 above is very attractive but I am concerned
about its impact on the size and growth/datastore,

The complexity of approach #2  #3 above concerns me because I would need to
use tasks (I haven't implemented tasks yet on app engine)  I don't know
what a good implementation would require.

What do you think about this? Suggestions  comments welcomed.

Jeff

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: again Request was aborted after waiting too long...

2010-08-27 Thread David Burns
My site is constantly serving so should always been warm according
to the Dashboard. My AppStats don't show any particular spikes or any
areas that are slow.

When the datastore was serving really slowly I did a number of
optimizations to make sure that DataStore access was minimal to a
point I can't/dont want to move the last bit into memory.

I am with Jan in that it would be good to know when this happens so i
can possibly refactor my code.

David

On Aug 27, 12:28 am, Jan Z/ Hapara jan.zawad...@gmail.com wrote:
 Just as an experiment we ran this job again, this time using JMeter to
 prime the VM's at a sustained 25 requests per second for 15-20 mins
 before the tasks were queued up.

 No impact - same request aborted rate as before.

 So it doesn't seem like it's a problem with availability of warm
 vm's...

 J

 On Aug 27, 10:08 am, Jan Z/ Hapara jan.zawad...@gmail.com wrote:







  Had another data run complete just now - a url-fetch focused job
  (talking to Google services only, no rpc, no db, little memcache) with
  2,500 tasks spread across 5 queues at 6/m each.   Average task is 4-8
  urlfetches, runs in 17s, with  100msec CPU time.  There was minimal
  to no other load on the app at the time.

  Job completion: 6h 24m

  Effective task run rate (taking the requestaborted... + requeue
  into account): 384 per hour.  Expected run rate: 1,800.

  Effective task queue efficiency: 21%.

  Something is amiss here...  According to the docs, this is way below
  any published quotas, we ought to be able to run this off a single
  queue at 20/s?

  Some insight from Google around what to even look for would be hugely
  appreciated!!

  J

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Channel API with TyphoonAE

2010-08-27 Thread Tobias
Hi,

I'm happy to announce that TyphoonAE (only trunk, for now) already has
experimental support for the new Channel API. We have the Google IO
Trivia Quiz running on our server http://trivia-quiz.typhoonae.org:8080/

For more detailed information, visit this 
http://code.google.com/p/typhoonae/wiki/ChannelAPI
wiki page and follow us on Twitter http://twitter.com/TyphoonAE to be
informed on upcoming releases.

Thanks!
Tobias

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Datastore viewer edit entities doesn't work

2010-08-27 Thread coltsith
I'm trying to update some int fields and when I press 'save entity' it
just ignores the changes.

Anyone else experiencing this behavior?

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: RSS Feed Aggregator

2010-08-27 Thread nevets1219
That link looks great! I'll spend some time reading more about it,
thank so much!

On Aug 26, 1:18 pm, nickmilon nickmi...@gmail.com wrote:
 Sure  an aggregator is doable in App Engine.
 May be you also take a look here:http://code.google.com/p/pubsubhubbub/

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Detect Mobile Phone

2010-08-27 Thread prgmratlarge
Well I was thinking of using the datastore. Would this be possible,
and what would be the method to the query?

On Aug 27, 3:44 am, Filippo De Luca dl.fili...@filosganga.it wrote:
 Yes it is true. Whether it is worth depends on the application aim. A
 good compromise can be a lightweight wurfl api without the LD
 algoritm. And a trie in substitution to RIS.

 On Aug 27, 12:11 am, prgmratlarge yossiele...@gmail.com wrote:



  Yes, but the CPU required to do a lookup is simply not worth it.
  Remember, every time a (new) user hits the site you do a lookup. It
  can add up very quickly.

  On Aug 26, 9:07 am, Filippo De Luca dl.fili...@filosganga.it wrote:

   Hi,
   I'm aWURFLapi maintainer. The issue should be due to the GAE size
   limit. A simple workaround may be split thewurflxml file in several
   little file, one root and many patches. I will do this utility
   available for the GAE community.

   On Aug 23, 10:46 pm, moissinac jcmoissi...@gmail.com wrote:

I've made some tests withWURFL(from sourceforge)
It works very well on my development platform
But it fails on GAE due to the size limit:WURFLuses a huge XML file
and GAE fails to open the compressed version of the file
For now, I have no time to resolve this issue until end of september

On 23 août, 21:10, Ikai L (Google) ika...@google.com wrote:

 Can you use the user-agent?

 On Sat, Aug 21, 2010 at 11:12 PM, prgmratlarge 
 yossiele...@gmail.comwrote:

  Need a quick and easy way to detect mobile phones from my app, that
  won't add too much performance overhead. Any suggestions?

  --
  You received this message because you are subscribed to the Google 
  Groups
  Google App Engine group.
  To post to this group, send email to 
  google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to
  google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
   e...@googlegroups.com
  .
  For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.

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

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Detect Mobile Phone

2010-08-27 Thread prgmratlarge
Well I was thinking of using the datastore. Is it possible? And what
would be the method to the query?

On Aug 27, 3:44 am, Filippo De Luca dl.fili...@filosganga.it wrote:
 Yes it is true. Whether it is worth depends on the application aim. A
 good compromise can be a lightweight wurfl api without the LD
 algoritm. And a trie in substitution to RIS.

 On Aug 27, 12:11 am, prgmratlarge yossiele...@gmail.com wrote:



  Yes, but the CPU required to do a lookup is simply not worth it.
  Remember, every time a (new) user hits the site you do a lookup. It
  can add up very quickly.

  On Aug 26, 9:07 am, Filippo De Luca dl.fili...@filosganga.it wrote:

   Hi,
   I'm aWURFLapi maintainer. The issue should be due to the GAE size
   limit. A simple workaround may be split thewurflxml file in several
   little file, one root and many patches. I will do this utility
   available for the GAE community.

   On Aug 23, 10:46 pm, moissinac jcmoissi...@gmail.com wrote:

I've made some tests withWURFL(from sourceforge)
It works very well on my development platform
But it fails on GAE due to the size limit:WURFLuses a huge XML file
and GAE fails to open the compressed version of the file
For now, I have no time to resolve this issue until end of september

On 23 août, 21:10, Ikai L (Google) ika...@google.com wrote:

 Can you use the user-agent?

 On Sat, Aug 21, 2010 at 11:12 PM, prgmratlarge 
 yossiele...@gmail.comwrote:

  Need a quick and easy way to detect mobile phones from my app, that
  won't add too much performance overhead. Any suggestions?

  --
  You received this message because you are subscribed to the Google 
  Groups
  Google App Engine group.
  To post to this group, send email to 
  google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to
  google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
   e...@googlegroups.com
  .
  For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.

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

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Paypal / Payment integration and domain related questions for GAE

2010-08-27 Thread fedex1
Hi,

Yes PayPal, Google Checkout and Amazon FPS are all available within
App Engine.

I've integrated all of them at http://move.brooklynmarathon.com
Which you can use if you'd like.

Ralph

On Aug 27, 3:52 am, Andrius A andriu...@gmail.com wrote:
 1) yes, try to google and you will find examples

 2) yes, you can use you own domains

 3) unfortunatly this is due to ssl limitations. Still your users will be
 able to acces through your domain but browser will show that certificate is
 untrasted. With https you can use only appspot.com subdomains.

 On 27 Aug 2010 01:10, Divkis divick.kish...@gmail.com wrote:

 Hi,
    I am trying to evaluate GAE, if it suits my purpose.

 One of the requirements that I have is that I want integration with a
 couple of payment gateways, the top priority being paypal.

 1. Could someone please help me answer if it is even possible to
 integrate paypal and/or some other payment gateway with GAE?

 2. The other question that I have is if I have a domain say xyz.com,
 then users accessinghttp://www.xyz.comwill be directed to my
 application deployed on GAE?

 3. Having looked at Wikipedia entry for 
 GAE,http://en.wikipedia.org/wiki/Google_App_Engine,
 section 'Restrictions', it says
 SSL/HTTPS is only available via *.appspot.com domains and not via
 Google Apps Domains

 I am not sure what this really means and what implication does it
 have?

 Thanks in advance,
 Divkia

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib 
 e...@googlegroups.com
 .
 For more options, visit this group 
 athttp://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Question about Stored Data and Quota of 41 Gigs vs. 1 Gig

2010-08-27 Thread fedex1
Hi,

What is the app engine limit for stored data?  It appears to be 41
Gigs according to the Quota Details page
But the billing report shows that the limit is 1 Gig.

I'm over the 1 Gig limit but far below the 41 Gig limit, can someone
clear this up.  Maybe there are different interpretations of storage.
But is this Datastore storage?  log storage?  what data is the 41 Gig
limit for and what data is the 1 Gig limit for.

Thanks,
Ralph

Billing Report:
ResourceUsedFreeBillableCharge
Stored Data:
$0.005/GByte-day1.151.000.15$0.01

Quote Details Page:
Total Stored Data5%  1.91 of 41.00 GBytesOkay

app_id=race-results

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Question about Stored Data and Quota of 41 Gigs vs. 1 Gig

2010-08-27 Thread Eli Jones
1GB of data storage is free.

Any data store usage above 1GB but less than 41GB (the max storage is
something you can set when you configure your Billing Settings) will be
billed to you.

If you look at your billing report, it states that Used = 1.15, Free = 1.00,
and Billable = 0.15.


On Fri, Aug 27, 2010 at 4:16 PM, fedex1 fed...@gmail.com wrote:

 Hi,

 What is the app engine limit for stored data?  It appears to be 41
 Gigs according to the Quota Details page
 But the billing report shows that the limit is 1 Gig.

 I'm over the 1 Gig limit but far below the 41 Gig limit, can someone
 clear this up.  Maybe there are different interpretations of storage.
 But is this Datastore storage?  log storage?  what data is the 41 Gig
 limit for and what data is the 1 Gig limit for.

 Thanks,
 Ralph

 Billing Report:
 ResourceUsedFreeBillableCharge
 Stored Data:
 $0.005/GByte-day1.151.000.15$0.01

 Quote Details Page:
 Total Stored Data5%  1.91 of 41.00 GBytesOkay

 app_id=race-results

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Question about Stored Data and Quota of 41 Gigs vs. 1 Gig

2010-08-27 Thread fedex1
Hi Eli,

Thanks. After looking at it more, I understand and agree with you.
The Quota Details page is a little confusing since it does not
mention that 1 Gig is the free quota and 40 is the paid quota.

I looked at the Datastore Statistics for this application and it says:
Size of all entities278 MBytes

Do you know where the 2.15 Gigs is being counted from?

Thanks again.

On Aug 27, 4:25 pm, Eli Jones eli.jo...@gmail.com wrote:
 1GB of data storage is free.

 Any data store usage above 1GB but less than 41GB (the max storage is
 something you can set when you configure your Billing Settings) will be
 billed to you.

 If you look at your billing report, it states that Used = 1.15, Free = 1.00,
 and Billable = 0.15.







 On Fri, Aug 27, 2010 at 4:16 PM, fedex1 fed...@gmail.com wrote:
  Hi,

  What is the app engine limit for stored data?  It appears to be 41
  Gigs according to the Quota Details page
  But the billing report shows that the limit is 1 Gig.

  I'm over the 1 Gig limit but far below the 41 Gig limit, can someone
  clear this up.  Maybe there are different interpretations of storage.
  But is this Datastore storage?  log storage?  what data is the 41 Gig
  limit for and what data is the 1 Gig limit for.

  Thanks,
  Ralph

  Billing Report:
  Resource        Used    Free    Billable        Charge
  Stored Data:
  $0.005/GByte-day        1.15    1.00    0.15    $0.01

  Quote Details Page:
  Total Stored Data                5%      1.91 of 41.00 GBytes    Okay

  app_id=race-results

  --
  You received this message because you are subscribed to the Google Groups
  Google App Engine group.
  To post to this group, send email to google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to
  google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib 
  e...@googlegroups.com
  .
  For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Question about Stored Data and Quota of 41 Gigs vs. 1 Gig

2010-08-27 Thread fedex1
Sorry.  I meant 1.15 Gigs.

On Aug 27, 4:59 pm, fedex1 fed...@gmail.com wrote:
 Hi Eli,

 Thanks. After looking at it more, I understand and agree with you.
 The Quota Details page is a little confusing since it does not
 mention that 1 Gig is the free quota and 40 is the paid quota.

 I looked at the Datastore Statistics for this application and it says:
 Size of all entities    278 MBytes

 Do you know where the 2.15 Gigs is being counted from?

 Thanks again.

 On Aug 27, 4:25 pm, Eli Jones eli.jo...@gmail.com wrote:







  1GB of data storage is free.

  Any data store usage above 1GB but less than 41GB (the max storage is
  something you can set when you configure your Billing Settings) will be
  billed to you.

  If you look at your billing report, it states that Used = 1.15, Free = 1.00,
  and Billable = 0.15.

  On Fri, Aug 27, 2010 at 4:16 PM, fedex1 fed...@gmail.com wrote:
   Hi,

   What is the app engine limit for stored data?  It appears to be 41
   Gigs according to the Quota Details page
   But the billing report shows that the limit is 1 Gig.

   I'm over the 1 Gig limit but far below the 41 Gig limit, can someone
   clear this up.  Maybe there are different interpretations of storage.
   But is this Datastore storage?  log storage?  what data is the 41 Gig
   limit for and what data is the 1 Gig limit for.

   Thanks,
   Ralph

   Billing Report:
   Resource        Used    Free    Billable        Charge
   Stored Data:
   $0.005/GByte-day        1.15    1.00    0.15    $0.01

   Quote Details Page:
   Total Stored Data                5%      1.91 of 41.00 GBytes    Okay

   app_id=race-results

   --
   You received this message because you are subscribed to the Google Groups
   Google App Engine group.
   To post to this group, send email to google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
e...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Your Suggestions Comments on Cascading Deletes Across Potentially Thousands of Entities

2010-08-27 Thread Robert Kluin
Options 2 or 3 sound like good choices.

Option 1 will leave 'junk' lingering around your datastore cluttering
stuff up.  Any operation you might need to run over all child entities
will (potentially) need to be aware of orphaned records.  Just seems
like the kind of thing that will bite you down the road.

With option 2 you need to do a bit more up front, but not much.  Kick
off a transactional 'deleted' task that analyzes the hierarchy and
spawns any other needed tasks.  That will let the delete handler
return quick.  Then the backend will clean itself up.

Option 3 is very similar to option 2. The biggest benefit I see is
that perhaps you can somehow batch delete operations more efficiently?
 I think you'll still wind up using the task queue to handle cascading
deletes though, right?  I guess you would basically pull the deleted
entity markers, build some type of processing list and delete as much
as you could before getting a timeout and repeat?  Using task queues
this could be probably be parallellized to be made more efficient.


Not really sure my thoughts really add much.  Currently In my code I
use option 2 for a variety of things (updates and deletes).  I just
like it because it gets stuff done as close as possible to the user's
action.

Robert




On Fri, Aug 27, 2010 at 09:15, Jeff Schwartz jefftschwa...@gmail.com wrote:
 Hi all,

 I'm developing an application that has the following datastore models:

 StatusUpdate - members' distributed status
 StatusUpdateLike - members can mark a StatusUpdate as liked
 StatusUpdateLikeCounter - counter of # of members who like a StatusUpdate
 DistributionIndex - has a list property of member ids used to syndicate
 content to subscribed members
 Comment - a comment made by a member about a StatusUpdate
 CommentLike - members can mark a Comment as liked
 CommentLikeCounter - counter of # of members who like a Comment

 A StatusUpdate can have many Comments but there is no entitygroup
 relationship between them.
 A StatusUpdate can have many DistributionIndexes and both form an enitty
 group where StatusUpdate is the root of the hierarchy and
 DistributionIndexes are the children.
 A StatusUpdate can have many StatusUpdateLikes but there is no entitygroup
 relationship between them.
 A StatusUpdate can have many StatusUpdateLikesCounters (sharded) but there
 is no entitygroup relationship between them.
 A Comment can have many CommentLikes but there is no entitygroup
 relationship between them.
 A Comment can have many CommentLikeCounters (sharded) but there is no
 entitygroup relationship between them.

 When a StatusUpdate is deleted by the member who created it I am thinking I
 can approach 'clean up' in one of 2 ways  I would like your opinions on
 both:

 1) I can just delete the StatusUpdate and its child DistributionIndexes and
 leave all the other entities in place in the datastore. This would not
 impact the application because the StatusUpdate is the root of its logical
 hierarchy and without it all the other entities are ignored. Depending on
 the popularity of the application leaving these entities in place could
 result in the datastore maintaining thousands of orphaned entities.

 2) I can go through the logical hierarchy and cascade deletion. Depending on
 the popularity of the application this could require the deletion of
 thousands of records. Though everything would be done using keys and batch
 deletes, deleting thousands of records couldn't be done in-process and would
 require kicking of tasks to perform the cascading deletes.

 3) I could use a combination of the above. When a member deletes a
 StatusUpdate I could delete it and its associated DistributionIndexes and
 create a new entity that would serve as a marker for the deleted
 StatusUpdate. I could then schedule a task to kick off periodically that
 would query for the marker entities. If found I could kick off tasks to do
 the clean up out of process.

 The simplicity of approach #1 above is very attractive but I am concerned
 about its impact on the size and growth/datastore,

 The complexity of approach #2  #3 above concerns me because I would need to
 use tasks (I haven't implemented tasks yet on app engine)  I don't know
 what a good implementation would require.

 What do you think about this? Suggestions  comments welcomed.

 Jeff

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more 

Re: [google-appengine] Re: Question about Stored Data and Quota of 41 Gigs vs. 1 Gig

2010-08-27 Thread Robert Kluin
Probably indexes.

Star this issue:
http://code.google.com/p/googleappengine/issues/detail?id=2740



Robert






On Fri, Aug 27, 2010 at 17:06, fedex1 fed...@gmail.com wrote:
 Sorry.  I meant 1.15 Gigs.

 On Aug 27, 4:59 pm, fedex1 fed...@gmail.com wrote:
 Hi Eli,

 Thanks. After looking at it more, I understand and agree with you.
 The Quota Details page is a little confusing since it does not
 mention that 1 Gig is the free quota and 40 is the paid quota.

 I looked at the Datastore Statistics for this application and it says:
 Size of all entities    278 MBytes

 Do you know where the 2.15 Gigs is being counted from?

 Thanks again.

 On Aug 27, 4:25 pm, Eli Jones eli.jo...@gmail.com wrote:







  1GB of data storage is free.

  Any data store usage above 1GB but less than 41GB (the max storage is
  something you can set when you configure your Billing Settings) will be
  billed to you.

  If you look at your billing report, it states that Used = 1.15, Free = 
  1.00,
  and Billable = 0.15.

  On Fri, Aug 27, 2010 at 4:16 PM, fedex1 fed...@gmail.com wrote:
   Hi,

   What is the app engine limit for stored data?  It appears to be 41
   Gigs according to the Quota Details page
   But the billing report shows that the limit is 1 Gig.

   I'm over the 1 Gig limit but far below the 41 Gig limit, can someone
   clear this up.  Maybe there are different interpretations of storage.
   But is this Datastore storage?  log storage?  what data is the 41 Gig
   limit for and what data is the 1 Gig limit for.

   Thanks,
   Ralph

   Billing Report:
   Resource        Used    Free    Billable        Charge
   Stored Data:
   $0.005/GByte-day        1.15    1.00    0.15    $0.01

   Quote Details Page:
   Total Stored Data                5%      1.91 of 41.00 GBytes    Okay

   app_id=race-results

   --
   You received this message because you are subscribed to the Google Groups
   Google App Engine group.
   To post to this group, send email to google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
e...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine?hl=en.

 --
 You received this message because you are subscribed to the Google Groups 
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to 
 google-appengine+unsubscr...@googlegroups.com.
 For more options, visit this group at 
 http://groups.google.com/group/google-appengine?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Question about Stored Data and Quota of 41 Gigs vs. 1 Gig

2010-08-27 Thread fedex1
Wow, thanks.  And yes, I've starred it.

On Aug 27, 5:19 pm, Robert Kluin robert.kl...@gmail.com wrote:
 Probably indexes.

 Star this issue:http://code.google.com/p/googleappengine/issues/detail?id=2740

 Robert







 On Fri, Aug 27, 2010 at 17:06, fedex1 fed...@gmail.com wrote:
  Sorry.  I meant 1.15 Gigs.

  On Aug 27, 4:59 pm, fedex1 fed...@gmail.com wrote:
  Hi Eli,

  Thanks. After looking at it more, I understand and agree with you.
  The Quota Details page is a little confusing since it does not
  mention that 1 Gig is the free quota and 40 is the paid quota.

  I looked at the Datastore Statistics for this application and it says:
  Size of all entities    278 MBytes

  Do you know where the 2.15 Gigs is being counted from?

  Thanks again.

  On Aug 27, 4:25 pm, Eli Jones eli.jo...@gmail.com wrote:

   1GB of data storage is free.

   Any data store usage above 1GB but less than 41GB (the max storage is
   something you can set when you configure your Billing Settings) will be
   billed to you.

   If you look at your billing report, it states that Used = 1.15, Free = 
   1.00,
   and Billable = 0.15.

   On Fri, Aug 27, 2010 at 4:16 PM, fedex1 fed...@gmail.com wrote:
Hi,

What is the app engine limit for stored data?  It appears to be 41
Gigs according to the Quota Details page
But the billing report shows that the limit is 1 Gig.

I'm over the 1 Gig limit but far below the 41 Gig limit, can someone
clear this up.  Maybe there are different interpretations of storage.
But is this Datastore storage?  log storage?  what data is the 41 Gig
limit for and what data is the 1 Gig limit for.

Thanks,
Ralph

Billing Report:
Resource        Used    Free    Billable        Charge
Stored Data:
$0.005/GByte-day        1.15    1.00    0.15    $0.01

Quote Details Page:
Total Stored Data                5%      1.91 of 41.00 GBytes    Okay

app_id=race-results

--
You received this message because you are subscribed to the Google 
Groups
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to
google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.com
.
For more options, visit this group at
   http://groups.google.com/group/google-appengine?hl=en.

  --
  You received this message because you are subscribed to the Google Groups 
  Google App Engine group.
  To post to this group, send email to google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to 
  google-appengine+unsubscr...@googlegroups.com.
  For more options, visit this group 
  athttp://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.