Skip to content

Commit

Permalink
Merge pull request #220 from GoogleCloudPlatform/ds-stats
Browse files Browse the repository at this point in the history
Add App Engine Datastore stats sample.
  • Loading branch information
tswast committed Apr 29, 2016
2 parents 14ddc54 + b0850b9 commit 01ecbef
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
* Copyright 2016 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.example.appengine;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.Query;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StatsServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// [START stat_example]
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity globalStat = datastore.prepare(new Query("__Stat_Total__")).asSingleEntity();
Long totalBytes = (Long) globalStat.getProperty("bytes");
Long totalEntities = (Long) globalStat.getProperty("count");
// [END stat_example]

resp.setContentType("text/plain");
resp.setCharacterEncoding("UTF-8");
PrintWriter w = resp.getWriter();
w.printf("%d bytes\n%d entities\n", totalBytes, totalEntities);
}
}
// [END cursors]
21 changes: 21 additions & 0 deletions appengine/datastore/src/main/webapp/WEB-INF/web.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,14 @@
<servlet-name>projection</servlet-name>
<url-pattern>/projection</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>stats</servlet-name>
<servlet-class>com.example.appengine.StatsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>stats</servlet-name>
<url-pattern>/stats</url-pattern>
</servlet-mapping>

<!-- Special handler to populate Datastore with default values. -->
<servlet>
Expand All @@ -73,4 +81,17 @@
<role-name>*</role-name> <!-- Require users to login. -->
</auth-constraint>
</security-constraint>

<security-constraint>
<web-resource-collection>
<web-resource-name>profile</web-resource-name>
<url-pattern>/stats</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
</web-app>

0 comments on commit 01ecbef

Please sign in to comment.