Author: rjung
Date: Wed Jan  9 15:19:00 2008
New Revision: 610607

URL: http://svn.apache.org/viewvc?rev=610607&view=rev
Log:
Use property table to decide which status worker cmd action
uses which output elements.

Modified:
    tomcat/connectors/trunk/jk/native/common/jk_status.c
    tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml

Modified: tomcat/connectors/trunk/jk/native/common/jk_status.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_status.c?rev=610607&r1=610606&r2=610607&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Wed Jan  9 15:19:00 
2008
@@ -121,6 +121,17 @@
 #define JK_STATUS_CMD_TEXT_RECOVER         ("recover")
 #define JK_STATUS_CMD_TEXT_DEF             (JK_STATUS_CMD_TEXT_LIST)
 
+#define JK_STATUS_CMD_PROP_CHECK_WORKER    0x00000001
+#define JK_STATUS_CMD_PROP_READONLY        0x00000002
+#define JK_STATUS_CMD_PROP_HEAD            0x00000004
+#define JK_STATUS_CMD_PROP_REFRESH         0x00000008
+#define JK_STATUS_CMD_PROP_BACK_LINK       0x00000010
+#define JK_STATUS_CMD_PROP_BACK_LIST       0x00000020
+#define JK_STATUS_CMD_PROP_FMT             0x00000040
+#define JK_STATUS_CMD_PROP_SWITCH_RO       0x00000080
+#define JK_STATUS_CMD_PROP_LINK_HELP       0x00000100
+#define JK_STATUS_CMD_PROP_LEGEND          0x00000200
+
 #define JK_STATUS_MIME_UNKNOWN             (0)
 #define JK_STATUS_MIME_HTML                (1)
 #define JK_STATUS_MIME_XML                 (2)
@@ -807,6 +818,40 @@
     return JK_STATUS_MIME_UNKNOWN;
 }
 
+static jk_uint32_t status_cmd_props(int cmd)
+{
+  jk_uint32_t props = 0;
+
+  if (cmd == JK_STATUS_CMD_LIST ||
+      cmd == JK_STATUS_CMD_SHOW)
+      props |= JK_STATUS_CMD_PROP_REFRESH |
+               JK_STATUS_CMD_PROP_SWITCH_RO |
+               JK_STATUS_CMD_PROP_LINK_HELP |
+               JK_STATUS_CMD_PROP_LEGEND;
+  if (cmd == JK_STATUS_CMD_LIST ||
+      cmd == JK_STATUS_CMD_SHOW ||
+      cmd == JK_STATUS_CMD_VERSION)
+      props |= JK_STATUS_CMD_PROP_HEAD |
+               JK_STATUS_CMD_PROP_FMT;
+  if (cmd == JK_STATUS_CMD_SHOW ||
+      cmd == JK_STATUS_CMD_VERSION)
+      props |= JK_STATUS_CMD_PROP_BACK_LIST;
+  if (cmd == JK_STATUS_CMD_SHOW ||
+      cmd == JK_STATUS_CMD_EDIT ||
+      cmd == JK_STATUS_CMD_VERSION)
+      props |= JK_STATUS_CMD_PROP_BACK_LINK;
+  if (cmd != JK_STATUS_CMD_EDIT &&
+      cmd != JK_STATUS_CMD_UPDATE &&
+      cmd != JK_STATUS_CMD_RESET &&
+      cmd != JK_STATUS_CMD_RECOVER)
+      props |= JK_STATUS_CMD_PROP_READONLY;
+  if (cmd != JK_STATUS_CMD_LIST &&
+      cmd != JK_STATUS_CMD_VERSION)
+      props |= JK_STATUS_CMD_PROP_CHECK_WORKER;
+      
+    return props;
+}
+
 static void status_start_form(jk_ws_service_t *s,
                               status_endpoint_t *p,
                               const char *method,
@@ -2824,8 +2869,6 @@
         list_workers_type(s, p, 0, ajp_cnt, l);
     }
 
-    display_legend(s, p, l);
-
     JK_TRACE_EXIT(l);
     return JK_TRUE;
 }
@@ -2845,7 +2888,6 @@
         return JK_FALSE;
     }
     display_worker(s, p, jw, l);
-    display_legend(s, p, l);
 
     JK_TRACE_EXIT(l);
     return JK_TRUE;
@@ -3077,6 +3119,7 @@
                              jk_logger_t *l, int *is_error)
 {
     int cmd;
+    jk_uint32_t cmd_props;
     int mime;
     int refresh;
     int read_only = 0;
@@ -3132,6 +3175,7 @@
     }
     status_get_string(p, JK_STATUS_ARG_CMD, NULL, &arg, l);
     cmd = status_cmd_int(arg);
+    cmd_props = status_cmd_props(cmd);
     status_get_string(p, JK_STATUS_ARG_MIME, NULL, &arg, l);
     mime = status_mime_int(arg);
     refresh = status_get_int(p, JK_STATUS_ARG_REFRESH, 0, l);
@@ -3204,11 +3248,7 @@
     }
 
     if (!err) {
-        if (read_only &&
-            (cmd == JK_STATUS_CMD_EDIT ||
-            cmd == JK_STATUS_CMD_UPDATE ||
-            cmd == JK_STATUS_CMD_RESET ||
-            cmd == JK_STATUS_CMD_RECOVER)) {
+        if (read_only && !(cmd_props & JK_STATUS_CMD_PROP_READONLY)) {
             err = "This command is not allowed in read only mode.";
         }
     }
@@ -3220,8 +3260,7 @@
         else if (mime == JK_STATUS_MIME_UNKNOWN) {
             err = "Invalid mime type.";
         }
-        else if (cmd != JK_STATUS_CMD_LIST &&
-                 cmd != JK_STATUS_CMD_VERSION &&
+        else if (cmd_props & JK_STATUS_CMD_PROP_CHECK_WORKER &&
                  (check_worker(s, p, l) != JK_TRUE)) {
             err = p->msg;
         }
@@ -3311,9 +3350,7 @@
                 jk_print_xml_att_string(s, 2, "name", s->server_name);
                 jk_print_xml_att_int(s, 2, "port", s->server_port);
                 jk_print_xml_stop_elt(s, 0, 1);
-                if ((cmd == JK_STATUS_CMD_LIST) ||
-                    (cmd == JK_STATUS_CMD_SHOW) ||
-                    (cmd == JK_STATUS_CMD_VERSION)) {
+                if (cmd_props & JK_STATUS_CMD_PROP_HEAD) {
                     if (rc_time > 0 ) {
                         jk_print_xml_start_elt(s, w, 0, 0, "time");
                         jk_print_xml_att_string(s, 2, "datetime", buf_time);
@@ -3344,9 +3381,7 @@
                 jk_printf(s, " name=%s", s->server_name);
                 jk_printf(s, " port=%d", s->server_port);
                 jk_puts(s, "\n");
-                if ((cmd == JK_STATUS_CMD_LIST) ||
-                    (cmd == JK_STATUS_CMD_SHOW) ||
-                    (cmd == JK_STATUS_CMD_VERSION)) {
+                if (cmd_props & JK_STATUS_CMD_PROP_HEAD) {
                     if (rc_time > 0) {
                         jk_puts(s, "Time:");
                         jk_printf(s, " datetime=%s", buf_time);
@@ -3375,9 +3410,7 @@
             else if (mime == JK_STATUS_MIME_PROP) {
                 jk_print_prop_att_string(s, w, NULL, "server_name", 
s->server_name);
                 jk_print_prop_att_int(s, w, NULL, "server_port", 
s->server_port);
-                if ((cmd == JK_STATUS_CMD_LIST) ||
-                    (cmd == JK_STATUS_CMD_SHOW) ||
-                    (cmd == JK_STATUS_CMD_VERSION)) {
+                if (cmd_props & JK_STATUS_CMD_PROP_HEAD) {
                     if (rc_time > 0) {
                         jk_print_prop_att_string(s, w, NULL, "time_datetime", 
buf_time);
                         jk_print_prop_att_string(s, w, NULL, "time_tz", 
buf_tz);
@@ -3400,8 +3433,7 @@
                 }
             }
             else if (mime == JK_STATUS_MIME_HTML) {
-                if ((cmd == JK_STATUS_CMD_LIST ||
-                    cmd == JK_STATUS_CMD_SHOW) &&
+                if (cmd_props & JK_STATUS_CMD_PROP_REFRESH &&
                     refresh > 0) {
                     jk_printf(s, "\n<meta http-equiv=\"Refresh\" 
content=\"%d;url=%s?%s\">",
                           refresh, s->req_uri, p->query_string);
@@ -3418,9 +3450,7 @@
                     jk_puts(s, " (read only)");
                 }
                 jk_puts(s, "</h1>\n\n");
-                if ((cmd == JK_STATUS_CMD_LIST) ||
-                    (cmd == JK_STATUS_CMD_SHOW) ||
-                    (cmd == JK_STATUS_CMD_VERSION)) {
+                if (cmd_props & JK_STATUS_CMD_PROP_HEAD) {
                     jk_putv(s, "<table><tr><td>Server Version:</td><td>",
                             s->server_software, 
"</td><td>&nbsp;&nbsp;&nbsp;</td><td>", NULL);
                     if (rc_time > 0) {
@@ -3432,8 +3462,7 @@
                     jk_printf(s, "Unix Seconds:</td><td>%d", unix_seconds);
                     jk_puts(s, "</td></tr></table>\n<hr/>\n");
                 }
-                if (cmd == JK_STATUS_CMD_LIST ||
-                    cmd == JK_STATUS_CMD_SHOW) {
+                if (cmd_props & JK_STATUS_CMD_PROP_REFRESH) {
                     if (refresh > 0) {
                         const char *str = p->query_string;
                         char *buf = jk_pool_alloc(s->pool, sizeof(char *) * 
(strlen(str)+1));
@@ -3482,15 +3511,12 @@
                         jk_puts(s, "</form>\n");
                     }
                 }
-                if (cmd == JK_STATUS_CMD_SHOW ||
-                    cmd == JK_STATUS_CMD_EDIT ||
-                    cmd == JK_STATUS_CMD_VERSION) {
+                if (cmd_props & JK_STATUS_CMD_PROP_BACK_LINK) {
                     int from;
                     status_get_string(p, JK_STATUS_ARG_FROM, NULL, &arg, l);
                     from = status_cmd_int(arg);
                     jk_puts(s, "[");
-                    if (cmd == JK_STATUS_CMD_SHOW ||
-                        cmd == JK_STATUS_CMD_VERSION ||
+                    if (cmd_props & JK_STATUS_CMD_PROP_BACK_LIST ||
                         from == JK_STATUS_CMD_LIST) {
                         status_write_uri(s, p, "Back to worker list", 
JK_STATUS_CMD_LIST, JK_STATUS_MIME_UNKNOWN,
                                          "", "", 0, 0, "", l);
@@ -3501,9 +3527,7 @@
                     }
                     jk_puts(s, "]&nbsp;&nbsp;");
                 }
-                if (cmd == JK_STATUS_CMD_LIST ||
-                    cmd == JK_STATUS_CMD_SHOW ||
-                    cmd == JK_STATUS_CMD_VERSION) {
+                if (cmd_props & JK_STATUS_CMD_PROP_FMT) {
                     jk_puts(s, "[Change&nbsp;Format: ");
                     status_write_uri(s, p, "XML", 0, JK_STATUS_MIME_XML,
                                      NULL, NULL, 0, 0, NULL, l);
@@ -3515,7 +3539,7 @@
                                      NULL, NULL, 0, 0, NULL, l);
                     jk_puts(s, "]&nbsp;&nbsp;");
                 }
-                if (cmd == JK_STATUS_CMD_LIST || cmd == JK_STATUS_CMD_SHOW) {
+                if (cmd_props & JK_STATUS_CMD_PROP_SWITCH_RO) {
                     if (!w->read_only) {
                         jk_puts(s, "[");
                         if (read_only) {
@@ -3529,12 +3553,13 @@
                         jk_puts(s, "]&nbsp;&nbsp;\n");
                     }
                 }
-                if (cmd == JK_STATUS_CMD_LIST || cmd == JK_STATUS_CMD_SHOW) {
+                if (cmd_props & JK_STATUS_CMD_PROP_LINK_HELP) {
                     jk_puts(s, "[");
-                    if (cmd == JK_STATUS_CMD_LIST)
+                    if (cmd == JK_STATUS_CMD_LIST) {
                         jk_puts(s, "<b>S</b>=Show only this worker");
-                    if (!read_only && cmd == JK_STATUS_CMD_LIST)
-                        jk_puts(s, ", ");
+                        if (!read_only)
+                            jk_puts(s, ", ");
+                    }
                     if (!read_only)
                         jk_puts(s, "<b>E</b>=Edit worker, <b>R</b>=Reset 
worker state, <b>T</b>=Try worker recovery");
                     jk_puts(s, "]\n");
@@ -3557,6 +3582,9 @@
                         err = "Error in generating this worker's configuration 
form.";
                     }
                 }
+            }
+            if (cmd_props & JK_STATUS_CMD_PROP_LEGEND) {
+                display_legend(s, p, l);
             }
         }
     }

Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=610607&r1=610606&r2=610607&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Wed Jan  9 
15:19:00 2008
@@ -44,6 +44,10 @@
   <subsection name="Native">
     <changelog>
       <update>
+        LB: Use property table to decide which cmd action uses which
+        output elements. (rjung)
+      </update>
+      <update>
         Common: Include original configuration map in worker_env
         to make it available for workers, e.g. the status worker. (rjung)
       </update>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to