Author: ivol37 at gmail.com
Date: Mon Dec 13 11:23:40 2010
New Revision: 490
Log:
[AMDATU-200] Changed caching method for my gadgets (from maxAge to no-cache)
and added caching headers to course resource
Modified:
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseResource.java
trunk/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
Modified:
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseResource.java
==============================================================================
---
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseResource.java
(original)
+++
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseResource.java
Mon Dec 13 11:23:40 2010
@@ -18,26 +18,29 @@
import static org.amdatu.example.course.service.osgi.Activator.RESOURCE_ID;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.CacheControl;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
+import javax.ws.rs.core.Response;
+import org.amdatu.authorization.login.service.LoginService;
+import org.amdatu.core.config.templates.ConfigTemplateManager;
import org.amdatu.example.course.service.Course;
import org.amdatu.example.course.service.CourseList;
import org.amdatu.example.course.service.CourseService;
-import org.amdatu.authorization.login.service.LoginService;
-import org.amdatu.core.config.templates.ConfigTemplateManager;
+import org.amdatu.opensocial.profile.PersonService;
import org.amdatu.web.httpcontext.HttpContextServiceFactory;
import org.amdatu.web.httpcontext.ResourceProvider;
-import org.amdatu.opensocial.profile.PersonService;
import org.apache.felix.dm.Component;
import org.apache.shindig.social.opensocial.model.Person;
import org.osgi.framework.Bundle;
@@ -65,6 +68,13 @@
// Instance variables
private List<String> m_cachedUrls = new ArrayList<String>();
private Component m_httpContextComponent;
+
+ // HTTP caching policy for this REST interface
+ private static CacheControl m_cacheControl;
+ static {
+ m_cacheControl = new CacheControl();
+ m_cacheControl.setNoCache(true);
+ }
/**
* The init() method is invoked by the Felix dependency manager.
@@ -92,7 +102,7 @@
*/
@GET
@Produces({MediaType.APPLICATION_JSON})
- public CourseList getCourses(@Context HttpHeaders headers, @Context
HttpServletRequest request) {
+ public Response getCourses(@Context HttpHeaders headers, @Context
HttpServletRequest request) {
String viewer = null;
List<String> authHeader =
headers.getRequestHeaders().get("Authorization");
if (authHeader != null) {
@@ -111,7 +121,7 @@
try {
if (viewer == null || "anonymous".equals(viewer)) {
- return courseList;
+ Response.ok(courseList).cacheControl(m_cacheControl).build();
} else {
// Get the profile
User user =
m_userAdmin.getUser(LoginService.USER_NAME_CREDENTIAL_KEY, viewer);
@@ -122,7 +132,7 @@
if (person != null) {
List<Course> courses =
m_courseService.getAvailableCourses(person);
courseList.setCourses(courses);
- return courseList;
+ return
Response.ok(courseList).cacheControl(m_cacheControl).build();
}
}
}
@@ -131,7 +141,7 @@
+ viewer + "'", e);
}
- return courseList;
+ return Response.ok(courseList).cacheControl(m_cacheControl).build();
}
public URL getResource(String name) {
Modified:
trunk/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
==============================================================================
---
trunk/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
(original)
+++
trunk/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
Mon Dec 13 11:23:40 2010
@@ -111,11 +111,17 @@
private ConcurrentMap<URL, FutureTask<Object[]>> m_gadgetSpecCache =
new ConcurrentHashMap<URL, FutureTask<Object[]>>();
- // Disable HTTP caching in this REST interface
- private static CacheControl m_cacheControl;
+ // HTTP caching for this REST interface
+ private static CacheControl m_noCacheControl;
static {
- m_cacheControl = new CacheControl();
- m_cacheControl.setMaxAge(300); // 5 minutes
+ m_noCacheControl = new CacheControl();
+ m_noCacheControl.setNoCache(true); // No cache
+ }
+
+ private static CacheControl m_maxAgeCacheControl;
+ static {
+ m_maxAgeCacheControl = new CacheControl();
+ m_maxAgeCacheControl.setMaxAge(300); // 5 minutes
}
/**
@@ -202,7 +208,7 @@
m_logService.log(LogService.LOG_ERROR, "An error occurred while
retrieving all categories", e);
}
- return Response.ok(jsonObject.toString(),
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
+ return Response.ok(jsonObject.toString(),
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_maxAgeCacheControl).build();
}
/**
@@ -260,7 +266,7 @@
catch (BlobCrypterException e) {
m_logService.log(LogService.LOG_ERROR, errorMsg, e);
}
- return Response.ok(jsonObject.toString(),
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
+ return Response.ok(jsonObject.toString(),
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_maxAgeCacheControl).build();
}
/**
@@ -389,7 +395,7 @@
m_logService.log(LogService.LOG_ERROR, errorMsg, e);
}
- return Response.ok(jsonObject.toString(),
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
+ return Response.ok(jsonObject.toString(),
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_noCacheControl).build();
}
private void setGadgetId(JSONObject gadget, String gadgetId, boolean
generateStartId) throws JSONException {