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 {

Reply via email to