Author: ivol37 at gmail.com
Date: Mon Dec 13 11:07:21 2010
New Revision: 489

Log:
[AMDATU-200] Added HTTP Caching headers to REST APIs

Modified:
   
trunk/amdatu-authentication/oauth-server/src/main/java/org/amdatu/authentication/oauth/server/service/OAuthServiceConsumerRegistryREST.java
   
trunk/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
   
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/GroupsResource.java
   
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/ResourceBase.java
   
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/UsersResource.java
   
trunk/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
   
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
   
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/GadgetManagementServiceTest.java

Modified: 
trunk/amdatu-authentication/oauth-server/src/main/java/org/amdatu/authentication/oauth/server/service/OAuthServiceConsumerRegistryREST.java
==============================================================================
--- 
trunk/amdatu-authentication/oauth-server/src/main/java/org/amdatu/authentication/oauth/server/service/OAuthServiceConsumerRegistryREST.java
 (original)
+++ 
trunk/amdatu-authentication/oauth-server/src/main/java/org/amdatu/authentication/oauth/server/service/OAuthServiceConsumerRegistryREST.java
 Mon Dec 13 11:07:21 2010
@@ -27,6 +27,7 @@
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.CacheControl;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
@@ -38,6 +39,7 @@
 import org.amdatu.authentication.oauth.api.OAuthServiceConsumer;
 import org.amdatu.authentication.oauth.api.OAuthServiceConsumerRegistry;
 import org.amdatu.web.httpcontext.ResourceProvider;
+import org.apache.http.HttpStatus;
 import org.osgi.service.log.LogService;
 
 /**
@@ -52,18 +54,27 @@
     // The oAuth service consumer registry
     private volatile OAuthServiceConsumerRegistry m_registry;
     private volatile LogService m_logService;
+    
+    // HTTP caching policy for this REST interface
+    private static CacheControl m_cacheControl;
+    static {
+        m_cacheControl = new CacheControl();
+        m_cacheControl.setNoCache(true);
+    }
 
     public void start() {
         m_logService.log(LogService.LOG_DEBUG, "OAuth Service Consumer 
registry REST service started.");
     }
-
-    @GET
+    
     /**
-     * Use this method to verify if the REST service is online.
+     * This method can be used to check the availability of the OAuth Service 
Consumer.
+     * @return The text "OAuth Service Consumer registry online"
      */
-    public Response status() {
-        return Response.ok().build();
-    }
+    @GET
+    @Produces({MediaType.TEXT_PLAIN})
+    public String status() {
+        return "OAuth Service Consumer registry online";
+    }  
 
     /**
      * REST interface: GET 
/rest/services/oauth/consumers/oauth/consumers/{consumerKey}
@@ -75,13 +86,13 @@
     @GET
     @Path("{consumerKey}")
     @Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    public OAuthServiceConsumer getConsumer(@PathParam("consumerKey") final 
String consumerKey, @Context UriInfo uriInfo) {
+    public Response getConsumer(@PathParam("consumerKey") final String 
consumerKey, @Context UriInfo uriInfo) {
         try {
             OAuthServiceConsumer consumer = 
m_registry.getConsumer(consumerKey);
             if (consumer != null) {
-                return OAuthServiceConsumerBean.copy(consumer, uriInfo);
+                return Response.ok(OAuthServiceConsumerBean.copy(consumer, 
uriInfo)).cacheControl(m_cacheControl).build();
             } else {
-                return null;
+                return 
Response.status(HttpStatus.SC_NOT_FOUND).cacheControl(m_cacheControl).build();
             }
         }
         catch (IllegalAccessException e) {
@@ -106,7 +117,7 @@
     public Response addConsumer(OAuthServiceConsumerBean consumer) {
         try {
             m_registry.addConsumer(consumer);
-            return Response.ok().build();
+            return Response.ok().cacheControl(m_cacheControl).build();
         }
         catch (ConsumerAlreadyExistsException e) {
             throw new WebApplicationException(Response.Status.NOT_MODIFIED);
@@ -129,7 +140,7 @@
     public Response updateConsumer(@PathParam("consumerKey") final String 
consumerKey, OAuthServiceConsumerBean consumer) {
         try {
             m_registry.updateConsumer(consumer);
-            return Response.ok().build();
+            return Response.ok().cacheControl(m_cacheControl).build();
         }
         catch (ConsumerNotFoundException e) {
             throw new WebApplicationException(Response.Status.NOT_FOUND);
@@ -150,7 +161,7 @@
     public Response deleteConsumer(@PathParam("consumerKey") final String 
consumerKey) {
         try {
             m_registry.removeConsumer(m_registry.getConsumer(consumerKey));
-            return Response.ok().build();
+            return Response.ok().cacheControl(m_cacheControl).build();
         }
         catch (ConsumerNotFoundException e) {
             throw new WebApplicationException(Response.Status.NOT_FOUND);

Modified: 
trunk/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
==============================================================================
--- 
trunk/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
 (original)
+++ 
trunk/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
 Mon Dec 13 11:07:21 2010
@@ -16,12 +16,19 @@
  */
 package org.amdatu.authorization.login.service.service;
 
+import java.net.URL;
+
 import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+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.MediaType;
 import javax.ws.rs.core.Response;
-import java.net.URL;
 
 import org.amdatu.authorization.login.service.LoginService;
 import org.amdatu.authorization.login.service.osgi.Activator;
@@ -33,7 +40,11 @@
 import org.json.JSONObject;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.log.LogService;
-import org.osgi.service.useradmin.*;
+import org.osgi.service.useradmin.Authorization;
+import org.osgi.service.useradmin.Group;
+import org.osgi.service.useradmin.Role;
+import org.osgi.service.useradmin.User;
+import org.osgi.service.useradmin.UserAdmin;
 
 /**
  * This service is responsible for authorization handling, based on the 
UserAdmin OSGi service.
@@ -54,7 +65,14 @@
 
     // The private HTTP context service for this bundle
     private Component m_httpContextComponent;
-
+    
+    // Disable HTTP caching in 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.
      */
@@ -88,6 +106,16 @@
     }
 
     /**
+     * This method can be used to check the availability of the Login Service.
+     * @return The text "Login service online"
+     */
+    @GET
+    @Produces({MediaType.TEXT_PLAIN})
+    public String status() {
+        return "Login service online";
+    } 
+    
+    /**
      * This REST service returns the current login status. Returns the 
username of the current user is logged in or an
      * empty string if the user is not logged in.
      */
@@ -107,13 +135,13 @@
                 if (auth != null) {
                     String currentUser = auth.getName();
                     jsonObject.append("username", currentUser);
-                    return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).build();
+                    return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
                 }
             }
         } catch (JSONException e) {
             m_logService.log(LogService.LOG_ERROR, "Could not retrieve current 
login status", e);
         }
-        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).build();
+        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
     }
 
     /**
@@ -166,7 +194,7 @@
         } catch (JSONException e) {
             m_logService.log(LogService.LOG_ERROR, "Could not retrieve current 
login status", e);
         }
-        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).build();
+        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
     }
 
     /**
@@ -195,17 +223,7 @@
         } catch (JSONException e) {
             m_logService.log(LogService.LOG_ERROR, "Could not retrieve current 
login status", e);
         }
-        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).build();
-    }
-
-    /**
-     * This method can be used to check the availability of the Login Service.
-     * @return The text "Login service online"
-     */
-    @GET
-    @Produces({MediaType.TEXT_PLAIN})
-    public String checkAvailability() {
-        return "Authorization service online";
+        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
     }
 
     public URL getResource(String name) {

Modified: 
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/GroupsResource.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/GroupsResource.java
  (original)
+++ 
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/GroupsResource.java
  Mon Dec 13 11:07:21 2010
@@ -24,6 +24,7 @@
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.CacheControl;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
@@ -46,6 +47,23 @@
  */
 @Path("groups")
 public class GroupsResource extends ResourceBase implements 
DummyResourceInterface {
+    // Disable HTTP caching in this REST interface
+    private static CacheControl m_cacheControl;
+    static {
+        m_cacheControl = new CacheControl();
+        m_cacheControl.setNoCache(true);
+    }
+    
+    /**
+     * This method can be used to check the availability of the Groups 
management service.
+     * @return The text "UserAdmin Groups management service online"
+     */
+    @GET
+    @Produces({MediaType.TEXT_PLAIN})
+    public String status() {
+        return "UserAdmin Groups management service online";
+    } 
+    
     /**
      * Returns all groups that match the specified filter options. This method 
can be invoked by making the following
      * REST call:<code><pre>
@@ -235,12 +253,12 @@
         Role member = m_userAdmin.getRole(memberName);
         if (role != null && role.getType() == Role.GROUP && member != null) {
             if (((Group) role).removeMember(member)) {
-                return Response.ok(MediaType.APPLICATION_JSON_TYPE).build();
+                return buildOK();
             } else {
-                return Response.notModified("Member already removed").build();
+                return buildNotModified("Member already removed");
             }
         } else {
-            return Response.status(Response.Status.NOT_FOUND).build();
+            return buildNotFound();
         }
     }
 
@@ -249,14 +267,14 @@
         Role member = m_userAdmin.getRole(memberName);
         if (role != null && role.getType() == Role.GROUP && member != null) {
             if (!required && ((Group) role).addMember(member)) {
-                return Response.ok(MediaType.APPLICATION_JSON_TYPE).build();
+                return buildOK();
             } else if (required && ((Group) role).addRequiredMember(member)) {
-                return Response.ok(MediaType.APPLICATION_JSON_TYPE).build();
+                return buildOK();
             } else {
-                return Response.notModified("Member already added").build();
+                return buildNotModified("Member already added");
             }
         } else {
-            return Response.status(Response.Status.NOT_FOUND).build();
+            return buildNotFound();
         }
     }
 }

Modified: 
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/ResourceBase.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/ResourceBase.java
    (original)
+++ 
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/ResourceBase.java
    Mon Dec 13 11:07:21 2010
@@ -21,6 +21,7 @@
 import java.util.Comparator;
 import java.util.List;
 
+import javax.ws.rs.core.CacheControl;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
@@ -37,6 +38,13 @@
     // Service dependencies injected by the depedency manager
     protected volatile LogService m_logService;
     protected volatile UserAdmin m_userAdmin;
+    
+    // Disable HTTP caching in this REST interface
+    private static CacheControl m_cacheControl;
+    static {
+        m_cacheControl = new CacheControl();
+        m_cacheControl.setNoCache(true);
+    }
 
     /**
      * Returns the roles (users or groups) for the specified filter options.
@@ -108,7 +116,7 @@
             jsonObject.put("resultCount", roleRange.size());
             jsonObject.put("totalCount", filteredRoles.size());
 
-            return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).build();
+            return buildOK(jsonObject);
         } catch (InvalidSyntaxException e) {
             m_logService.log(LogService.LOG_ERROR, "Unable to retrieve roles 
for filter '" + filter + "', startIndex '"
                     + startIndex + "' maxResults '" + maxResults + "'", e);
@@ -116,7 +124,7 @@
             m_logService.log(LogService.LOG_ERROR, "Unable to retrieve roles 
for filter '" + filter + "', startIndex '"
                     + startIndex + "' maxResults '" + maxResults + "'", e);
         }
-        return Response.serverError().build();
+        return buildServerError();
     }
 
     protected Response getRole(String name, int roleType) {
@@ -124,22 +132,22 @@
             Role role = m_userAdmin.getRole(name);
             if (role != null && role.getType() == roleType) {
                 JSONObject jsonRole = getJSON(role);
-                return Response.ok(jsonRole.toString(), 
MediaType.APPLICATION_JSON_TYPE).build();
+                return buildOK(jsonRole);
             } else {
-                return Response.status(Response.Status.NOT_FOUND).build();
+                return buildNotFound();
             }
         } catch (JSONException e) {
             m_logService.log(LogService.LOG_ERROR, "Unable to retrieve role 
named '" + name + "'", e);
         }
-        return Response.serverError().build();
+        return buildServerError();
     }
 
     protected Response createRole(String name, int roleType) {
         Role role = m_userAdmin.createRole(name, roleType);
         if (role != null) {
-            return Response.ok(MediaType.APPLICATION_JSON_TYPE).build();
+            return buildOK();
         } else {
-            return Response.notModified("Role could not be created").build();
+            return buildNotModified("Role could not be created");
         }
     }
     
@@ -148,9 +156,9 @@
         Role role = m_userAdmin.getRole(name);
         if (role != null && role.getType() == roleType) {
             ((User) role).getCredentials().put(key, value);
-            return Response.ok(MediaType.APPLICATION_JSON_TYPE).build();
+            return buildOK();
         } else {
-            return Response.status(Response.Status.NOT_FOUND).build();
+            return buildNotFound();
         }
     }
 
@@ -159,9 +167,9 @@
         Role role = m_userAdmin.getRole(name);
         if (role != null && role.getType() == roleType) {
             role.getProperties().put(key, value);
-            return Response.ok(MediaType.APPLICATION_JSON_TYPE).build();
+            return buildOK();
         } else {
-            return Response.status(Response.Status.NOT_FOUND).build();
+            return buildNotFound();
         }
     }
 
@@ -169,12 +177,12 @@
         Role role = m_userAdmin.getRole(name);
         if (role != null && role.getType() == roleType) {
             if (m_userAdmin.removeRole(name)) {
-                return Response.ok(MediaType.APPLICATION_JSON_TYPE).build();
+                return buildOK();
             } else {
-                return Response.notModified("Role to remove not 
found").build();
+                return buildNotModified("Role to remove not found");
             }
         } else {
-            return Response.notModified("Role to remove not found").build();
+            return buildNotModified("Role to remove not found");
         }
     }
 
@@ -205,4 +213,24 @@
         }
         return jsonRole;
     }
+    
+    protected Response buildOK() {
+        return Response.ok().cacheControl(m_cacheControl).build();
+    }
+    
+    protected Response buildOK(JSONObject jsonObject) {
+        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
+    }
+    
+    protected Response buildNotFound() {
+        return 
Response.status(Response.Status.NOT_FOUND).cacheControl(m_cacheControl).build();
+    }
+    
+    protected Response buildNotModified(String msg) {
+        return Response.notModified(msg).cacheControl(m_cacheControl).build();
+    }
+    
+    protected Response buildServerError() {
+        return Response.serverError().cacheControl(m_cacheControl).build();
+    }
 }

Modified: 
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/UsersResource.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/UsersResource.java
   (original)
+++ 
trunk/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/rest/UsersResource.java
   Mon Dec 13 11:07:21 2010
@@ -44,6 +44,16 @@
 @Path("users")
 public class UsersResource extends ResourceBase implements 
DummyResourceInterface  {
     /**
+     * This method can be used to check the availability of the Users 
management service.
+     * @return The text "UserAdmin Users management service online"
+     */
+    @GET
+    @Produces({MediaType.TEXT_PLAIN})
+    public String status() {
+        return "UserAdmin Users management service online";
+    } 
+    
+    /**
      * Returns all users that match the specified filter options. This method 
can be invoked by making the following
      * REST call:<code><pre>
      * GET 
/rest/services/users/users?filter={filter}&sortOrder={sortOrder}&startIndex={startIndex}&maxResults={maxResults}

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:07:21 2010
@@ -42,6 +42,7 @@
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.CacheControl;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
@@ -110,6 +111,13 @@
     private ConcurrentMap<URL, FutureTask<Object[]>> m_gadgetSpecCache =
         new ConcurrentHashMap<URL, FutureTask<Object[]>>();
 
+    // Disable HTTP caching in this REST interface
+    private static CacheControl m_cacheControl;
+    static {
+        m_cacheControl = new CacheControl();
+        m_cacheControl.setMaxAge(300); // 5 minutes
+    }
+    
     /**
      * The init() method is invoked by the Felix dependency manager.
      */
@@ -140,6 +148,16 @@
         m_logService.log(LogService.LOG_INFO, getClass().getName() + " service 
destroyed");
     }
 
+    /**
+     * This method can be used to check the availability of the Gadget 
management service.
+     * @return The text "Gadget management service online"
+     */
+    @GET
+    @Produces({MediaType.TEXT_PLAIN})
+    public String status() {
+        return "Gadget management service online";
+    } 
+    
     public boolean addGadget(GadgetDefinition gadget) {
         return m_gadgetStore.addGadget(gadget);
     }
@@ -176,7 +194,6 @@
                 categories.add(json);
             }
             jsonObject.put("category", categories);
-
         }
         catch (JSONException e) {
             m_logService.log(LogService.LOG_ERROR, "An error occurred while 
retrieving all categories", e);
@@ -185,7 +202,7 @@
             m_logService.log(LogService.LOG_ERROR, "An error occurred while 
retrieving all categories", e);
         }
 
-        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).build();
+        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
     }
 
     /**
@@ -243,7 +260,7 @@
         catch (BlobCrypterException e) {
             m_logService.log(LogService.LOG_ERROR, errorMsg, e);
         }
-        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).build();
+        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
     }
 
     /**
@@ -372,7 +389,7 @@
             m_logService.log(LogService.LOG_ERROR, errorMsg, e);
         }
 
-        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).build();
+        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
     }
 
     private void setGadgetId(JSONObject gadget, String gadgetId, boolean 
generateStartId) throws JSONException {

Modified: 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
==============================================================================
--- 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
  (original)
+++ 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
  Mon Dec 13 11:07:21 2010
@@ -17,6 +17,7 @@
 package org.amdatu.semanticweb.sparqlendpoint.service;
 
 import javax.ws.rs.*;
+import javax.ws.rs.core.CacheControl;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import java.net.URL;
@@ -69,6 +70,13 @@
     private Component m_httpContextComponent;
     private String m_hostname;
     private String m_portnr;
+    
+    // HTTP caching policy for this REST interface
+    private static CacheControl m_cacheControl;
+    static {
+        m_cacheControl = new CacheControl();
+        m_cacheControl.setMaxAge(300); // 5 minutes
+    }
 
     /**
      * The init() method is invoked by the Felix dependency manager.
@@ -98,6 +106,16 @@
         // Stop the HTTP context service we created ourselves
         m_httpContextComponent.stop();
     }
+    
+    /**
+     * This method can be used to check the availability of the SPARQL 
Endpoint.
+     * @return The text "SPARQL Endpoint online"
+     */
+    @GET
+    @Produces({MediaType.TEXT_PLAIN})
+    public String status() {
+        return "SPARQL Endpoint online";
+    }    
 
     /**
      * Executes a SPARQL query and returns the result.
@@ -150,17 +168,7 @@
                 return jsonObject;
             }
         });
-        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).build();
-    }
-
-    /**
-     * This method can be used to check the availability of the SPARQL 
Endpoint.
-     * @return The text "SPARQL Endpoint online"
-     */
-    @GET
-    @Produces({MediaType.TEXT_PLAIN})
-    public String checkAvailability() {
-        return "SPARQL Endpoint online";
+        return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
     }
 
     public URL getResource(String name) {

Modified: 
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/GadgetManagementServiceTest.java
==============================================================================
--- 
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/GadgetManagementServiceTest.java
    (original)
+++ 
trunk/integration-tests/src/test/java/org/amdatu/test/integration/tests/GadgetManagementServiceTest.java
    Mon Dec 13 11:07:21 2010
@@ -78,6 +78,7 @@
             amdatuUserAdminCassandraStore(),
             amdatuHttpContext(),
             amdatuJaxRs(),
+            amdatuWink(),
             amdatuLogin(),
             amdatuShindig(),
             amdatuGadgetManagement()

Reply via email to