KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nextapp > echo2 > webrender > service > AsyncMonitorService


1 /*
2  * This file is part of the Echo Web Application Framework (hereinafter "Echo").
3  * Copyright (C) 2002-2005 NextApp, Inc.
4  *
5  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6  *
7  * The contents of this file are subject to the Mozilla Public License Version
8  * 1.1 (the "License"); you may not use this file except in compliance with
9  * the License. You may obtain a copy of the License at
10  * http://www.mozilla.org/MPL/
11  *
12  * Software distributed under the License is distributed on an "AS IS" basis,
13  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14  * for the specific language governing rights and limitations under the
15  * License.
16  *
17  * Alternatively, the contents of this file may be used under the terms of
18  * either the GNU General Public License Version 2 or later (the "GPL"), or
19  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
20  * in which case the provisions of the GPL or the LGPL are applicable instead
21  * of those above. If you wish to allow use of your version of this file only
22  * under the terms of either the GPL or the LGPL, and not to allow others to
23  * use your version of this file under the terms of the MPL, indicate your
24  * decision by deleting the provisions above and replace them with the notice
25  * and other provisions required by the GPL or the LGPL. If you do not delete
26  * the provisions above, a recipient may use your version of this file under
27  * the terms of any one of the MPL, the GPL or the LGPL.
28  */

29
30 package nextapp.echo2.webrender.service;
31
32 import java.io.IOException JavaDoc;
33
34 import nextapp.echo2.webrender.Connection;
35 import nextapp.echo2.webrender.ContentType;
36 import nextapp.echo2.webrender.Service;
37 import nextapp.echo2.webrender.UserInstance;
38
39 /**
40  * Abstract base service for handling server poll requests to determine if any
41  * asynchronous operations affecting a <code>UserInstance</code> have been
42  * performed since the last server interaction, such that the client might
43  * resynchronize with the server.
44  * <p>
45  * An instance of this service must be registered with the
46  * <code>ServiceRegistry</code> if asynchronous polling is required.
47  */

48 public abstract class AsyncMonitorService
49 implements Service {
50
51     /**
52      * Asynchronous monitoring service identifier.
53      */

54     public static final String JavaDoc SERVICE_ID = "Echo.AsyncMonitor";
55     
56     /**
57      * @see nextapp.echo2.webrender.Service#getId()
58      */

59     public String JavaDoc getId() {
60         return SERVICE_ID;
61     }
62     
63     /**
64      * @see nextapp.echo2.webrender.Service#getVersion()
65      */

66     public int getVersion() {
67         return DO_NOT_CACHE;
68     }
69     
70     /**
71      * Determines if the specified <code>UserInstance</code> requires
72      * immediate synchronization.
73      *
74      * @param userInstance the <code>UserInstance</code>
75      * @return true if the <code>UserInstance</code> requires immediate
76      * client-server synchronization
77      */

78     protected abstract boolean isSynchronizationRequired(UserInstance userInstance);
79     
80     /**
81      * @see nextapp.echo2.webrender.Service#service(nextapp.echo2.webrender.Connection)
82      */

83     public void service(Connection conn) throws IOException JavaDoc {
84         conn.setContentType(ContentType.TEXT_XML);
85         if (isSynchronizationRequired(conn.getUserInstance())) {
86             conn.getWriter().write("<async-monitor request-sync=\"true\"/>");
87         } else {
88             conn.getWriter().write("<async-monitor request-sync=\"false\"/>");
89         }
90     }
91 }
92
Popular Tags