Revision created by MOE tool push_codebase.
[gae.git] / java / src / main / com / google / appengine / tools / development / RequestEndListenerHelper.java
blobef42225a6475dc7f225a7e620f433e2e0a5add38
1 // Copyright 2012 Google Inc. All Rights Reserved.
3 package com.google.appengine.tools.development;
5 import com.google.apphosting.api.ApiProxy;
6 import com.google.apphosting.api.ApiProxy.Environment;
8 import java.util.Collection;
10 /**
11 * Helper class for {@link RequestEndListener}. This class provides two alternate ways to register
12 * a {@link RequestEndListener}. The first method works with classes that implement a {@link
13 * RequestEndListener}:
14 * <blockquote><pre>
15 * RequestEndListener listener = ...;
16 * RequestEndListenerHelper.register(listener);
17 * </pre></blockquote>
18 * The second method is for classes able to extend this class:
19 * <blockquote><pre>
20 * RequestEndListenerHelper listener = ...;
21 * listener.register();
22 * </pre></blockquote>
24 public abstract class RequestEndListenerHelper implements RequestEndListener {
25 /**
26 * Register the current instance to be called when a request ends.
28 public void register() {
29 register(this);
32 /**
33 * Register a RequestEndListener to be called when a request ends.
35 * @param listener The listener to register.
37 public static void register(RequestEndListener listener) {
38 getListeners().add(listener);
41 /**
42 * Get the collection of all the registered RequestEndListeners. The collection is mutable
43 * so the caller may add or remove listeners
45 * @return The collection of registered RequestEndListeners.
47 public static Collection<RequestEndListener> getListeners() {
48 Environment environment = ApiProxy.getCurrentEnvironment();
49 @SuppressWarnings("unchecked")
50 Collection<RequestEndListener> listenerSet = (Collection<RequestEndListener>)
51 environment.getAttributes().get(LocalEnvironment.REQUEST_END_LISTENERS);
52 return listenerSet;