You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2013/03/12 23:24:08 UTC

svn commit: r1455734 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main: java/org/apache/uima/ducc/ws/registry/ java/org/apache/uima/ducc/ws/server/ webapp/root/ webapp/root/js/ webapp/root/opensources/images/

Author: degenaro
Date: Tue Mar 12 22:24:08 2013
New Revision: 1455734

URL: http://svn.apache.org/r1455734
Log:
UIMA-2676 DUCC webserver (WS) Services presentation improvements...support for modify instances, autostart

Added:
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccCookies.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/opensources/images/220px-Harlem_viaduct.jpg   (with props)
Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccConstants.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebJobSpecificationProperties.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebUtil.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.js
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/service.details.jsp

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java?rev=1455734&r1=1455733&r2=1455734&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java Tue Mar 12 22:24:08 2013
@@ -40,6 +40,7 @@ public class IServicesRegistry {
 	
 	public static final String constant_Available = "Available";
 	public static final String constant_true = "true";
+	public static final String constant_false = "false";
 	
 	public static final String constant_NotKnown = "NotKnown";
 	public static final String constant_NotAvailable = "NotAvailable";

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java?rev=1455734&r1=1455733&r2=1455734&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java Tue Mar 12 22:24:08 2013
@@ -48,6 +48,7 @@ import org.apache.uima.ducc.transport.ev
 import org.apache.uima.ducc.ws.DuccMachinesData;
 import org.apache.uima.ducc.ws.registry.IServicesRegistry;
 import org.apache.uima.ducc.ws.registry.ServicesRegistry;
+import org.apache.uima.ducc.ws.server.DuccCookies.DateStyle;
 import org.eclipse.jetty.server.handler.AbstractHandler;
 
 public abstract class DuccAbstractHandler extends AbstractHandler {
@@ -77,8 +78,6 @@ public abstract class DuccAbstractHandle
 	public final int defaultRecordsReservations = 8;
 	public final int maximumRecordsServices = 4096;
 	public final int defaultRecordsServices = 12;
-
-	public final String defaultStyleDate = DuccWebUtil.valueStyleDateLong;
 	
 	public String dir_home = Utils.findDuccHome();
 	public String dir_resources = "resources";
@@ -176,7 +175,7 @@ public abstract class DuccAbstractHandle
 	}
 	
 	public String getTimeStamp(HttpServletRequest request, DuccId jobId, String millis) {
-		return getTimeStamp(getDateStyle(request),getTimeStamp(jobId, millis));
+		return getTimeStamp(DuccCookies.getDateStyle(request),getTimeStamp(jobId, millis));
 	}
 	
 	private String getTimeStamp(DuccId jobId, String millis) {
@@ -222,7 +221,7 @@ public abstract class DuccAbstractHandle
 					retVal = AuthorizationStatus.LoggedInOwner;
 				}
 				else {
-					RequestRole requestRole = getRole(request);
+					DuccCookies.RequestRole requestRole = DuccCookies.getRole(request);
 					switch(requestRole) {
 					case User:
 						text = "user "+userId+" is not resource owner "+resourceOwnerUserid;
@@ -263,6 +262,7 @@ public abstract class DuccAbstractHandle
 			switch(authorizationStatus) {
 			case LoggedInOwner:
 			case LoggedInAdministrator:
+				retVal = true;
 				break;
 			case LoggedInNotOwner:
 			case LoggedInNotAdministrator:
@@ -294,7 +294,7 @@ public abstract class DuccAbstractHandle
 					retVal = true;
 				}
 				else {
-					RequestRole requestRole = getRole(request);
+					DuccCookies.RequestRole requestRole = DuccCookies.getRole(request);
 					switch(requestRole) {
 					case User:
 						text = "user "+userId+" is not resource owner "+resourceOwnerUserid;
@@ -372,17 +372,17 @@ public abstract class DuccAbstractHandle
 	}
 	
 	public ArrayList<String> getJobsUsers(HttpServletRequest request) {
-		String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieJobsUsers);
+		String cookie = DuccCookies.getCookie(request,DuccCookies.cookieJobsUsers);
 		return getUsers(cookie);
 	}
 	
 	public ArrayList<String> getReservationsUsers(HttpServletRequest request) {
-		String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieReservationsUsers);
+		String cookie = DuccCookies.getCookie(request,DuccCookies.cookieReservationsUsers);
 		return getUsers(cookie);
 	}
 	
 	public ArrayList<String> getServicesUsers(HttpServletRequest request) {
-		String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieServicesUsers);
+		String cookie = DuccCookies.getCookie(request,DuccCookies.cookieServicesUsers);
 		return getUsers(cookie);
 	}
 	
@@ -528,93 +528,10 @@ public abstract class DuccAbstractHandle
 		return retVal;
 	}
 	
-	public enum DateStyle { Long, Medium, Short };
-	
-	public DateStyle getDateStyle(HttpServletRequest request) {
-		DateStyle dateStyle = DateStyle.Long;
-		try {
-			String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieStyleDate);
-			if(cookie.equals(DuccWebUtil.valueStyleDateLong)) {
-				dateStyle = DateStyle.Long;
-			}
-			else if(cookie.equals(DuccWebUtil.valueStyleDateMedium)) {
-				dateStyle = DateStyle.Medium;
-			}
-			else if(cookie.equals(DuccWebUtil.valueStyleDateShort)) {
-				dateStyle = DateStyle.Short;
-			}
-		}
-		catch(Exception e) {
-		}
-		return dateStyle;
-	}
-	
-	public enum DescriptionStyle { Long, Short };
-	
-	public DescriptionStyle getDescriptionStyle(HttpServletRequest request) {
-		DescriptionStyle descriptionStyle = DescriptionStyle.Long;
-		try {
-			String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieStyleDescription);
-			if(cookie.equals(DuccWebUtil.valueStyleDescriptionLong)) {
-				descriptionStyle = DescriptionStyle.Long;
-			}
-			else if(cookie.equals(DuccWebUtil.valueStyleDescriptionShort)) {
-				descriptionStyle = DescriptionStyle.Short;
-			}
-		}
-		catch(Exception e) {
-		}
-		return descriptionStyle;
-	}
-	
-	public enum FilterUsersStyle { Include, IncludePlusActive, Exclude, ExcludePlusActive };
-	
-	public FilterUsersStyle getFilterUsersStyle(HttpServletRequest request) {
-		FilterUsersStyle filterUsersStyle = FilterUsersStyle.Include;
-		try {
-			String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieStyleFilterUsers);
-			if(cookie.equals(DuccWebUtil.valueStyleFilterUsersInclude)) {
-				filterUsersStyle = FilterUsersStyle.Include;;
-			}
-			else if(cookie.equals(DuccWebUtil.valueStyleFilterUsersIncludePlusActive)) {
-				filterUsersStyle = FilterUsersStyle.IncludePlusActive;
-			}
-			else if(cookie.equals(DuccWebUtil.valueStyleFilterUsersExclude)) {
-				filterUsersStyle = FilterUsersStyle.Exclude;
-			}
-			else if(cookie.equals(DuccWebUtil.valueStyleFilterUsersExcludePlusActive)) {
-				filterUsersStyle = FilterUsersStyle.ExcludePlusActive;
-			}
-		}
-		catch(Exception e) {
-		}
-		return filterUsersStyle;
-	}
-	
-	public enum RequestRole { Administrator, User};
-	
-	public RequestRole getRole(HttpServletRequest request) {
-		RequestRole role = RequestRole.User;
-		try {
-			String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieRole);
-			if(cookie.equals(DuccWebUtil.valueRoleAdministrator)) {
-				role = RequestRole.Administrator;;
-			}
-			/*
-			else if(cookie.equals(DuccWebUtil.valueRoleUser)) {
-				role = RequestRole.User;
-			}
-			*/
-		}
-		catch(Exception e) {
-		}
-		return role;
-	}
-	
 	public int getJobsMax(HttpServletRequest request) {
 		int maxRecords = defaultRecordsJobs;
 		try {
-			String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieJobsMax);
+			String cookie = DuccCookies.getCookie(request,DuccCookies.cookieJobsMax);
 			int reqRecords = Integer.parseInt(cookie);
 			if(reqRecords <= maximumRecordsJobs) {
 				if(reqRecords > 0) {
@@ -630,7 +547,7 @@ public abstract class DuccAbstractHandle
 	public int getReservationsMax(HttpServletRequest request) {
 		int maxRecords = defaultRecordsReservations;
 		try {
-			String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieReservationsMax);
+			String cookie = DuccCookies.getCookie(request,DuccCookies.cookieReservationsMax);
 			int reqRecords = Integer.parseInt(cookie);
 			if(reqRecords <= maximumRecordsReservations) {
 				if(reqRecords > 0) {
@@ -646,7 +563,7 @@ public abstract class DuccAbstractHandle
 	public int getServicesMax(HttpServletRequest request) {
 		int maxRecords = defaultRecordsServices;
 		try {
-			String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieServicesMax);
+			String cookie = DuccCookies.getCookie(request,DuccCookies.cookieServicesMax);
 			int reqRecords = Integer.parseInt(cookie);
 			if(reqRecords <= maximumRecordsServices) {
 				if(reqRecords > 0) {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccConstants.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccConstants.java?rev=1455734&r1=1455733&r2=1455734&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccConstants.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccConstants.java Tue Mar 12 22:24:08 2013
@@ -32,4 +32,7 @@ public class DuccConstants {
 	public static final String hintPreferencesRoleAdministrator = "Hint: use Preferences -> Role [Administrator] to enable";
 	public static final String hintPreferencesDateStyle = "Hint: use Preferences -> Date Style to alter format";
 	public static final String hintLogin = "Hint: use Login to enable";
+	public static final String hintLoginAndManual = "Hint: use Login to enable and switch to Refresh = Manual";
+	public static final String hintManual = "Hint: switch to Refresh = Manual";
+	public static final String hintNotAuthorized = "Hint: not authorized";
 }

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccCookies.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccCookies.java?rev=1455734&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccCookies.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccCookies.java Tue Mar 12 22:24:08 2013
@@ -0,0 +1,247 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.server;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.uima.ducc.common.internationalization.Messages;
+import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
+
+public class DuccCookies {
+	
+	private static DuccLogger duccLogger = DuccLoggerComponents.getWsLogger(DuccCookies.class.getName());
+	private static Messages messages = Messages.getInstance();
+
+	public static final String cookieUri = "/";
+	
+	private static final String join = ":";
+	
+	private static final String application = "ducc";
+	
+	private static final String refreshmode = "refreshmode";
+	private static final String valueRefreshmodeAutomatic = "automatic";
+	private static final String valueRefreshmodeManual = "manual";
+	
+	private static final String jobs = "jobs";
+	private static final String reservations = "reservations";
+	private static final String services = "services";
+	
+	private static final String max = "max";
+	private static final String users = "users";
+	//private static final String qualifier = "qualifier";
+	
+	public static final String cookieRefreshMode = application+join+refreshmode;
+	public static final String cookieJobsMax = application+join+jobs+max;
+	public static final String cookieJobsUsers = application+join+jobs+users;
+	//public static final String cookieJobsUsersQualifier = application+join+jobs+users+qualifier;
+	public static final String cookieReservationsMax = application+join+reservations+max;
+	public static final String cookieReservationsUsers = application+join+reservations+users;
+	//public static final String cookieReservationsUsersQualifier = application+join+reservations+users+qualifier;
+	public static final String cookieServicesMax = application+join+services+max;
+	public static final String cookieServicesUsers = application+join+services+users;
+	//public static final String cookieServicesUsersQualifier = application+join+services+users+qualifier;
+	
+	private static final String agents = "agents";
+	
+	public static final String cookieAgents = application+join+agents;
+	public static final String valueAgentsShow = "show";
+	
+	private static final String table_style = "table_style";
+	private static final String date_style = "date_style";
+	private static final String description_style = "description_style";
+	private static final String filter_users_style = "filter_users_style";
+	private static final String role = "role";
+	
+	public static final String cookieStyleTable = application+join+table_style;
+	public static final String cookieStyleDate = application+join+date_style;
+	public static final String cookieStyleDescription = application+join+description_style;
+	public static final String cookieStyleFilterUsers = application+join+filter_users_style;
+	public static final String cookieRole = application+join+role;
+	
+	public static final String valueStyleDateLong = "long";
+	public static final String valueStyleDateMedium = "medium";
+	public static final String valueStyleDateShort = "short";
+	public static final String valueStyleDateDefault = valueStyleDateLong;
+	
+	public static final String valueStyleDescriptionLong = "long";
+	public static final String valueStyleDescriptionShort = "short";
+	public static final String valueStyleDescriptionDefault = valueStyleDescriptionLong;
+	
+	public static final String valueStyleFilterUsersInclude = "include";
+	public static final String valueStyleFilterUsersIncludePlusActive = "include+active";
+	public static final String valueStyleFilterUsersExclude = "exclude";
+	public static final String valueStyleFilterUsersExcludePlusActive = "exclude+active";
+	
+	public static final String valueRoleAdministrator = "administrator";
+	public static final String valueRoleUser = "user";
+
+	protected static final String getCookieKey(String name) {
+		return application+join+"name";
+	}
+	
+	protected static String getCookie(String defaultValue, HttpServletRequest request, String name) {
+		String methodName = "getCookie";
+		String retVal = defaultValue;
+		Cookie[] cookies = request.getCookies();
+		if(cookies != null) {
+			for(int i=0; i < cookies.length; i++) {
+				Cookie cookie = cookies[i];
+				if(cookie != null) {
+					String cookieName = cookie.getName();
+					if(cookieName != null) {
+						if(cookieName.equals(name)) {
+							retVal = cookie.getValue();
+							break;
+						}
+					}
+				}
+			}
+		}
+		duccLogger.debug(methodName, null, messages.fetchLabel("name")+name+" "+messages.fetchLabel("value")+retVal);
+		return retVal;
+	}
+	
+	protected static String getCookie(HttpServletRequest request, String name) {
+		return getCookie("",request,name);
+	}
+	
+	protected static String getCookieOrNull(HttpServletRequest request, String name) {
+		return getCookie(null,request,name);
+	}
+	
+	protected static void putCookie(HttpServletResponse response, String name, String value) {
+		String methodName = "putCookie";
+		Cookie cookie = new Cookie(name, value);
+		cookie.setPath(cookieUri);
+		response.addCookie(cookie);
+		duccLogger.debug(methodName, null, messages.fetchLabel("name")+name+" "+messages.fetchLabel("value")+value);
+	}
+	
+	protected static void expireCookie(HttpServletResponse response, String name, String value) {
+		String methodName = "expireCookie";
+		Cookie cookie = new Cookie(name, value);
+		cookie.setMaxAge(0);
+		response.addCookie(cookie);
+		duccLogger.debug(methodName, null, messages.fetchLabel("name")+name+" "+messages.fetchLabel("value")+value);
+	}
+	
+	public static enum DateStyle { Long, Medium, Short };
+	
+	public static DateStyle getDateStyle(HttpServletRequest request) {
+		DateStyle dateStyle = DateStyle.Long;
+		try {
+			String cookie = getCookie(request,cookieStyleDate);
+			if(cookie.equals(valueStyleDateLong)) {
+				dateStyle = DateStyle.Long;
+			}
+			else if(cookie.equals(valueStyleDateMedium)) {
+				dateStyle = DateStyle.Medium;
+			}
+			else if(cookie.equals(valueStyleDateShort)) {
+				dateStyle = DateStyle.Short;
+			}
+		}
+		catch(Exception e) {
+		}
+		return dateStyle;
+	}
+	
+	public static enum RefreshMode { Automatic, Manual };
+	
+	public static RefreshMode getRefreshMode(HttpServletRequest request) {
+		RefreshMode refreshMode = RefreshMode.Automatic;
+		try {
+			String cookie = getCookie(request,cookieRefreshMode);
+			if(cookie.equals(valueRefreshmodeAutomatic)) {
+				refreshMode = RefreshMode.Automatic;
+			}
+			else if(cookie.equals(valueRefreshmodeManual)) {
+				refreshMode = RefreshMode.Manual;
+			}
+		}
+		catch(Exception e) {
+		}
+		return refreshMode;
+	}
+	
+	public static enum DescriptionStyle { Long, Short };
+	
+	public static DescriptionStyle getDescriptionStyle(HttpServletRequest request) {
+		DescriptionStyle descriptionStyle = DescriptionStyle.Long;
+		try {
+			String cookie = getCookie(request,cookieStyleDescription);
+			if(cookie.equals(valueStyleDescriptionLong)) {
+				descriptionStyle = DescriptionStyle.Long;
+			}
+			else if(cookie.equals(valueStyleDescriptionShort)) {
+				descriptionStyle = DescriptionStyle.Short;
+			}
+		}
+		catch(Exception e) {
+		}
+		return descriptionStyle;
+	}
+	
+	public static enum FilterUsersStyle { Include, IncludePlusActive, Exclude, ExcludePlusActive };
+	
+	public static FilterUsersStyle getFilterUsersStyle(HttpServletRequest request) {
+		FilterUsersStyle filterUsersStyle = FilterUsersStyle.Include;
+		try {
+			String cookie = getCookie(request,cookieStyleFilterUsers);
+			if(cookie.equals(valueStyleFilterUsersInclude)) {
+				filterUsersStyle = FilterUsersStyle.Include;;
+			}
+			else if(cookie.equals(valueStyleFilterUsersIncludePlusActive)) {
+				filterUsersStyle = FilterUsersStyle.IncludePlusActive;
+			}
+			else if(cookie.equals(valueStyleFilterUsersExclude)) {
+				filterUsersStyle = FilterUsersStyle.Exclude;
+			}
+			else if(cookie.equals(valueStyleFilterUsersExcludePlusActive)) {
+				filterUsersStyle = FilterUsersStyle.ExcludePlusActive;
+			}
+		}
+		catch(Exception e) {
+		}
+		return filterUsersStyle;
+	}
+
+	public static enum RequestRole { Administrator, User};
+	
+	public static RequestRole getRole(HttpServletRequest request) {
+		RequestRole role = RequestRole.User;
+		try {
+			String cookie = getCookie(request,cookieRole);
+			if(cookie.equals(valueRoleAdministrator)) {
+				role = RequestRole.Administrator;;
+			}
+			/*
+			else if(cookie.equals(valueRoleUser)) {
+				role = RequestRole.User;
+			}
+			*/
+		}
+		catch(Exception e) {
+		}
+		return role;
+	}
+}

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1455734&r1=1455733&r2=1455734&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Tue Mar 12 22:24:08 2013
@@ -135,6 +135,8 @@ public class DuccHandler extends DuccAbs
 	private String duccServiceStart   				= duccContext+"/service-start-request";
 	private String duccServiceStop   				= duccContext+"/service-stop-request";
 	
+	private String duccServiceUpdate   				= duccContext+"/service-update-request";
+	
 	private String jsonMachinesData 				= duccContext+"/json-machines-data";
 	private String jsonSystemClassesData 			= duccContext+"/json-system-classes-data";
 	private String jsonSystemDaemonsData 			= duccContext+"/json-system-daemons-data";
@@ -144,6 +146,7 @@ public class DuccHandler extends DuccAbs
 	private String duccJobSubmitButton    			= duccContext+"/job-get-submit-button";
 	private String duccReservationFormButton  		= duccContext+"/reservation-get-form-button";
 	private String duccReservationSubmitButton  	= duccContext+"/reservation-get-submit-button";
+	private String duccServiceUpdateFormButton  	= duccContext+"/service-update-get-form-button";
 	
 	private String duccReservationSchedulingClasses     = duccContext+"/reservation-scheduling-classes";
 	private String duccReservationInstanceMemorySizes   = duccContext+"/reservation-instance-memory-sizes";
@@ -1533,6 +1536,8 @@ public class DuccHandler extends DuccAbs
 			String name = request.getParameter("name");
 			ServicesRegistry servicesRegistry = new ServicesRegistry();
 			ServicesRegistryMapPayload payload = servicesRegistry.findService(name);
+			String hint = getLoginRefreshHint(request, response);
+			String enable_or_disable = getEnabledOrDisabled(request, response);;
 			sb.append("<table>");
 			sb.append("<tr class=\"ducc-head\">");
 			sb.append("<th>");
@@ -1542,60 +1547,133 @@ public class DuccHandler extends DuccAbs
 			sb.append("Value");
 			sb.append("</th>");
 			sb.append("</tr>");
-			String prefix;
 			Properties properties;
-			TreeMap<String,String> map;
-			Enumeration<?> enumeration;
-			Iterator<String> iterator;
-			int i = 0;
-			int counter = 0;
-			//
-			prefix = "svc.";
-			properties = payload.svc;
-			map = new TreeMap<String,String>();
-			enumeration = properties.keys();
-			while(enumeration.hasMoreElements()) {
-				String key = (String)enumeration.nextElement();
-				map.put(key, key);
-			}
-			iterator = map.keySet().iterator();
-			while(iterator.hasNext()) {
-				String key = iterator.next();
-				String value = properties.getProperty(key);
-				if(key.endsWith("classpath")) {
-					value = formatClasspath(value);
-					String show = "<div class=\"hidedata\"><input type=\"submit\" name=\"showcp\" value=\"Show\" id=\"showbutton"+i+"\"/></div>";
-					String hide = "<div class=\"showdata\"><input type=\"submit\" name=\"hidecp\" value=\"Hide\" id=\"hidebutton"+i+"\"/>"+" "+value+"</div>";
-					value = show+hide;
-					i++;
-				}
-				putJobSpecEntry(properties, prefix+key, value, sb, counter++);
-			}
-			//
-			prefix = "meta.";
-			properties = payload.meta;
-			map = new TreeMap<String,String>();
-			enumeration = properties.keys();
-			while(enumeration.hasMoreElements()) {
-				String key = (String)enumeration.nextElement();
-				map.put(key, key);
-			}
-			iterator = map.keySet().iterator();
-			while(iterator.hasNext()) {
-				String key = iterator.next();
-				String value = properties.getProperty(key);
-				if(key.endsWith("classpath")) {
-					value = formatClasspath(value);
-					String show = "<div class=\"hidedata\"><input type=\"submit\" name=\"showcp\" value=\"Show\" id=\"showbutton"+i+"\"/></div>";
-					String hide = "<div class=\"showdata\"><input type=\"submit\" name=\"hidecp\" value=\"Hide\" id=\"hidebutton"+i+"\"/>"+" "+value+"</div>";
-					value = show+hide;
-					i++;
+			if(payload != null) {
+				properties = payload.meta;
+				String resourceOwnerUserId = properties.getProperty(IServicesRegistry.user).trim();
+				if(!isUserAuthorized(request,resourceOwnerUserId)) {
+					if(hint.length() == 0) {
+						AuthorizationStatus authorizationStatus = getAuthorizationStatus(request, resourceOwnerUserId);
+						switch(authorizationStatus) {
+						case LoggedInOwner:
+						case LoggedInAdministrator:
+							break;
+						case LoggedInNotOwner:
+						case LoggedInNotAdministrator:
+							enable_or_disable = "disabled=\"disabled\"";
+							String userid = DuccWebSessionManager.getInstance().getUserId(request);
+							boolean administrator = DuccWebAdministrators.getInstance().isAdministrator(userid);
+							if(administrator) {
+								hint = "title=\""+DuccConstants.hintPreferencesRoleAdministrator+"\"";
+							}
+							else {
+								hint = "title=\""+DuccConstants.hintNotAuthorized+"\"";
+							}
+							break;
+						case NotLoggedIn:
+							break;
+						default:
+							break;
+						}
+					}
 				}
-				putJobSpecEntry(properties, prefix+key, value, sb, counter++);
+				String prefix;
+				TreeMap<String,String> map;
+				Enumeration<?> enumeration;
+				Iterator<String> iterator;
+				int i = 0;
+				int counter = 0;
+				//
+				prefix = "svc.";
+				properties = payload.svc;
+				map = new TreeMap<String,String>();
+				enumeration = properties.keys();
+				while(enumeration.hasMoreElements()) {
+					String key = (String)enumeration.nextElement();
+					map.put(key, key);
+				}
+				iterator = map.keySet().iterator();
+				while(iterator.hasNext()) {
+					String key = iterator.next();
+					String value = properties.getProperty(key);
+					if(key.endsWith("classpath")) {
+						value = formatClasspath(value);
+						String show = "<div class=\"hidedata\"><input type=\"submit\" name=\"showcp\" value=\"Show\" id=\"showbutton"+i+"\"/></div>";
+						String hide = "<div class=\"showdata\"><input type=\"submit\" name=\"hidecp\" value=\"Hide\" id=\"hidebutton"+i+"\"/>"+" "+value+"</div>";
+						value = show+hide;
+						i++;
+					}
+					putJobSpecEntry(properties, prefix+key, value, sb, counter++);
+				}
+				//
+				prefix = "meta.";
+				properties = payload.meta;
+				map = new TreeMap<String,String>();
+				enumeration = properties.keys();
+				while(enumeration.hasMoreElements()) {
+					String key = (String)enumeration.nextElement();
+					map.put(key, key);
+				}
+				iterator = map.keySet().iterator();
+				while(iterator.hasNext()) {
+					String key = iterator.next();
+					String value = properties.getProperty(key);
+					if(key.endsWith("classpath")) {
+						value = formatClasspath(value);
+						String show = "<div class=\"hidedata\"><input type=\"submit\" name=\"showcp\" value=\"Show\" id=\"showbutton"+i+"\"/></div>";
+						String hide = "<div class=\"showdata\"><input type=\"submit\" name=\"hidecp\" value=\"Hide\" id=\"hidebutton"+i+"\"/>"+" "+value+"</div>";
+						value = show+hide;
+						i++;
+					}
+					key = key.trim();
+					// autostart
+					if(key.equalsIgnoreCase(IServicesRegistry.autostart)) {
+						if(value != null) {
+							value = value.trim();
+							if(value.equalsIgnoreCase(IServicesRegistry.constant_true)) {
+								StringBuffer replacement = new StringBuffer();
+								replacement.append("<select id=\"autostart\""+enable_or_disable+" "+hint+">");
+								replacement.append("<option value=\"true\"  selected=\"selected\">true</option>");
+								replacement.append("<option value=\"false\"                      >false</option>");
+								replacement.append("</select>");
+								value = replacement.toString();
+							}
+							else if(value.equalsIgnoreCase(IServicesRegistry.constant_false)) {
+								StringBuffer replacement = new StringBuffer();
+								replacement.append("<select id=\"autostart\""+enable_or_disable+" "+hint+">");
+								replacement.append("<option value=\"false\"  selected=\"selected\">false</option>");
+								replacement.append("<option value=\"true\"                        >true</option>");
+								replacement.append("</select>");
+								value = replacement.toString();
+							}
+						}
+					}
+					// instances
+					if(key.equalsIgnoreCase(IServicesRegistry.instances)) {
+						if(value != null) {
+							value = value.trim();
+							StringBuffer replacement = new StringBuffer();
+							replacement.append("<span id=\"instances_area\">");
+							replacement.append("<input type=\"text\" size=\"5\" id=\"instances\" value=\""+value+"\""+enable_or_disable+" "+hint+">");
+							replacement.append("</span>");
+							value = replacement.toString();
+						}
+					}
+					putJobSpecEntry(properties, prefix+key, value, sb, counter++);
+				}
+				sb.append("</table>");
+				sb.append("<br>");
+				sb.append("<br>");
+			}
+			else {
+				sb.append("<tr>");
+				sb.append("<td>");
+				sb.append("not found");
+				sb.append("</td>");
+				sb.append("<td>");
+				sb.append("</td>");
+				sb.append("</tr>");
 			}
-			sb.append("</table>");
-			sb.append("<br>");
-			sb.append("<br>");
 		}
 		catch(Exception e) {
 			duccLogger.warn(methodName, null, e);
@@ -2040,7 +2118,7 @@ public class DuccHandler extends DuccAbs
 			sb.append(",");
 			sb.append(quote(getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyDaemonName,daemonName.toString())));
 			sb.append(",");
-			sb.append(quote(getTimeStamp(getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""))));
+			sb.append(quote(getTimeStamp(DuccCookies.getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""))));
 			sb.append(",");
 			sb.append(quote(getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyNodeIpAddress,"")));
 			sb.append(",");
@@ -2059,7 +2137,7 @@ public class DuccHandler extends DuccAbs
 			sb.append(quote(heartmax));
 			sb.append(",");
 			try {
-				heartmaxTOD = getTimeStamp(getDateStyle(request),heartmaxTOD);
+				heartmaxTOD = getTimeStamp(DuccCookies.getDateStyle(request),heartmaxTOD);
 			}
 			catch(Exception e) {
 			}
@@ -2072,8 +2150,8 @@ public class DuccHandler extends DuccAbs
 			sb.append("]");
 		}
 		// <Agents>
-		String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieAgents);
-		if(cookie.equals(DuccWebUtil.valueAgentsShow)) {
+		String cookie = DuccCookies.getCookie(request,DuccCookies.cookieAgents);
+		if(cookie.equals(DuccCookies.valueAgentsShow)) {
 			duccLogger.trace(methodName, jobid, "== show: "+cookie);
 			ConcurrentSkipListMap<String,MachineInfo> machines = DuccMachinesData.getInstance().getMachines();
 			Iterator<String> iterator = machines.keySet().iterator();
@@ -2111,7 +2189,7 @@ public class DuccHandler extends DuccAbs
 				sb.append(quote(daemonName));
 				// Boot Time
 				sb.append(",");
-				String bootTime = getTimeStamp(getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
+				String bootTime = getTimeStamp(DuccCookies.getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
 				sb.append(quote(bootTime));
 				// Host IP
 				sb.append(",");
@@ -2152,7 +2230,7 @@ public class DuccHandler extends DuccAbs
 				if(heartbeatMaxTOD > 0) {
 					fmtHeartbeatMaxTOD = TimeStamp.simpleFormat(""+heartbeatMaxTOD);
 					try {
-						fmtHeartbeatMaxTOD = getTimeStamp(getDateStyle(request),fmtHeartbeatMaxTOD);
+						fmtHeartbeatMaxTOD = getTimeStamp(DuccCookies.getDateStyle(request),fmtHeartbeatMaxTOD);
 					}
 					catch(Exception e) {
 					}
@@ -2303,6 +2381,78 @@ public class DuccHandler extends DuccAbs
 		duccLogger.trace(methodName, null, messages.fetch("exit"));
 	}
 	
+	private String getLoginRefreshHint(HttpServletRequest request,HttpServletResponse response) {
+		String retVal = "";
+		DuccCookies.RefreshMode refreshMode = DuccCookies.getRefreshMode(request);
+		if(!isAuthenticated(request,response)) {
+			switch(refreshMode) {
+			default:
+			case Automatic:
+				retVal = "title=\""+DuccConstants.hintLoginAndManual+"\"";
+				break;
+			case Manual:
+				retVal = "title=\""+DuccConstants.hintLogin+"\"";
+				break;
+			}
+		}
+		else {
+			switch(refreshMode) {
+			default:
+			case Automatic:
+				retVal = "title=\""+DuccConstants.hintManual+"\"";
+				break;
+			case Manual:
+				break;
+			}
+		}
+		return retVal;
+	}
+	
+	private String getEnabledOrDisabled(HttpServletRequest request,HttpServletResponse response) {
+		String retVal = "";
+		DuccCookies.RefreshMode refreshMode = DuccCookies.getRefreshMode(request);
+		if(!isAuthenticated(request,response)) {
+			switch(refreshMode) {
+			default:
+			case Automatic:
+				retVal = "disabled=\"disabled\"";
+				break;
+			case Manual:
+				retVal = "disabled=\"disabled\"";
+				break;
+			}
+		}
+		else {
+			switch(refreshMode) {
+			default:
+			case Automatic:
+				retVal = "disabled=\"disabled\"";
+				break;
+			case Manual:
+				break;
+			}
+		}
+		return retVal;
+	}
+	
+	private void handleDuccServletServiceUpdateFormButton(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) 
+	throws IOException, ServletException
+	{
+		String methodName = "handleDuccServletServiceUpdateFormButton";
+		duccLogger.trace(methodName, null, messages.fetch("enter"));
+		String name = request.getParameter("name");
+		StringBuffer sb = new StringBuffer();
+		String hint = getLoginRefreshHint(request, response);
+		String enable_or_disable = getEnabledOrDisabled(request, response);
+		String button = "<button id=\"update_button\" "+hint+" onclick=\"ducc_update_service('"+name+"')\" style=\"font-size:8pt; background-color:green; color:ffffff;\">Update</button>";
+		if(enable_or_disable.length() > 0) {
+			button = "<button id=\"update_button\" "+enable_or_disable+" "+hint+" style=\"font-size:8pt;\">Update</button>";
+		}
+		sb.append(button);
+		response.getWriter().println(sb);
+		duccLogger.trace(methodName, null, messages.fetch("exit"));
+	}
+	
 	private void handleDuccServletReservationSubmitButton(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) 
 	throws IOException, ServletException
 	{
@@ -2454,7 +2604,7 @@ public class DuccHandler extends DuccAbs
 					String java = "/bin/java";
 					String jclass = "org.apache.uima.ducc.cli.DuccJobCancel";
 					String jhome = System.getProperty("java.home");
-					RequestRole requestRole = getRole(request);
+					DuccCookies.RequestRole requestRole = DuccCookies.getRole(request);
 					switch(requestRole) {
 					case Administrator:
 						String arg3 = "--"+SpecificationProperties.key_role_administrator;
@@ -2570,7 +2720,7 @@ public class DuccHandler extends DuccAbs
 					String java = "/bin/java";
 					String jclass = "org.apache.uima.ducc.cli.DuccReservationCancel";
 					String jhome = System.getProperty("java.home");
-					RequestRole requestRole = getRole(request);
+					DuccCookies.RequestRole requestRole = DuccCookies.getRole(request);
 					switch(requestRole) {
 					case Administrator:
 						String arg3 = "--"+SpecificationProperties.key_role_administrator;
@@ -2637,7 +2787,7 @@ public class DuccHandler extends DuccAbs
 						String java = "/bin/java";
 						String jclass = "org.apache.uima.ducc.cli.DuccServiceCancel";
 						String jhome = System.getProperty("java.home");
-						RequestRole requestRole = getRole(request);
+						DuccCookies.RequestRole requestRole = DuccCookies.getRole(request);
 						switch(requestRole) {
 						case Administrator:
 							String arg3 = "--"+SpecificationProperties.key_role_administrator;
@@ -2669,6 +2819,80 @@ public class DuccHandler extends DuccAbs
 		duccLogger.trace(methodName, null, messages.fetch("exit"));
 	}
 	
+	private void duccServletServiceCommand(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response, String command, ArrayList<String> parms) 
+	{
+		String methodName = "duccServletServiceCommand";
+		duccLogger.trace(methodName, null, messages.fetch("enter"));
+		try {
+			String name = "id";
+			String value = request.getParameter(name).trim();
+			duccLogger.info(methodName, null, command+" "+messages.fetchLabel("name:")+value);
+			String text;
+			String result;
+			name = value.trim();
+			ServicesRegistry servicesRegistry = new ServicesRegistry();
+			ServicesRegistryMapPayload payload = servicesRegistry.findService(name);
+			if(payload != null) {
+				Properties properties = payload.meta;
+				String id = properties.getProperty(IServicesRegistry.numeric_id);
+				String resourceOwnerUserId = servicesRegistry.findServiceUser(id);
+				if(resourceOwnerUserId != null) {
+					if(isUserAuthorized(request,resourceOwnerUserId)) {
+						String arg1 = "--"+command;
+						String arg2 = id;
+						String userId = duccWebSessionManager.getUserId(request);
+						String cp = System.getProperty("java.class.path");
+						String java = "/bin/java";
+						String jclass = "org.apache.uima.ducc.cli.DuccServiceApi";
+						String jhome = System.getProperty("java.home");
+						DuccCookies.RequestRole requestRole = DuccCookies.getRole(request);
+						switch(requestRole) {
+						/*
+						case Administrator:
+							String arg3 = "--"+SpecificationProperties.key_role_administrator;
+							String[] arglistAdministrator = { "-u", userId, "--", jhome+java, "-cp", cp, jclass, arg1, arg2, arg3 };
+							result = DuccAsUser.duckling(userId, arglistAdministrator);
+							response.getWriter().println(result);
+							break;
+						case User:
+						*/
+						default:
+							ArrayList<String> arglist = new ArrayList<String>();
+							arglist.add("-u");
+							arglist.add(userId);
+							arglist.add("--");
+							arglist.add(jhome+java);
+							arglist.add("-cp");
+							arglist.add(cp);
+							arglist.add(jclass);
+							arglist.add(arg1);
+							arglist.add(arg2);
+							for(String parm : parms) {
+								arglist.add(parm);
+							}
+							String[] arglistUser = arglist.toArray(new String[0]);
+							result = DuccAsUser.duckling(userId, arglistUser);
+							response.getWriter().println(result);
+							break;	
+						}
+					}
+				}
+				else {
+					text = "name "+value+" not found";
+					duccLogger.debug(methodName, null, messages.fetch(text));
+				}
+			}
+			else {
+				result = text = "name "+value+" not found";
+				duccLogger.debug(methodName, null, messages.fetch(text));
+			}
+		}
+		catch(Exception e) {
+			duccLogger.error(methodName, null, e);
+		}
+		duccLogger.trace(methodName, null, messages.fetch("exit"));
+	}
+	
 	private void duccServletServiceCommand(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response, String command) 
 	{
 		String methodName = "duccServletServiceCommand";
@@ -2691,7 +2915,7 @@ public class DuccHandler extends DuccAbs
 					String java = "/bin/java";
 					String jclass = "org.apache.uima.ducc.cli.DuccServiceApi";
 					String jhome = System.getProperty("java.home");
-					RequestRole requestRole = getRole(request);
+					DuccCookies.RequestRole requestRole = DuccCookies.getRole(request);
 					switch(requestRole) {
 					/*
 					case Administrator:
@@ -2742,7 +2966,27 @@ public class DuccHandler extends DuccAbs
 		
 		duccLogger.trace(methodName, null, messages.fetch("exit"));
 	}			
-				
+	
+	private void handleDuccServletServiceUpdate(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) 
+	throws IOException, ServletException
+	{
+		String methodName = "handleDuccServletServiceUpdate";
+		duccLogger.trace(methodName, null, messages.fetch("enter"));
+		
+		String instances = request.getParameter("instances");
+		String autostart = request.getParameter("autostart");
+		
+		ArrayList<String> parms = new ArrayList<String>();
+		parms.add("--instances");
+		parms.add(instances);
+		parms.add("--autostart");
+		parms.add(autostart);
+		
+		duccServletServiceCommand(target,baseRequest,request,response,"modify",parms);
+		
+		duccLogger.trace(methodName, null, messages.fetch("exit"));
+	}		
+	
 	private void handleDuccRequest(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) 
 	throws IOException, ServletException
 	{
@@ -2891,6 +3135,11 @@ public class DuccHandler extends DuccAbs
 				handleDuccServletServiceStop(target, baseRequest, request, response);
 				DuccWebUtil.noCache(response);
 			}
+			else if(reqURI.startsWith(duccServiceUpdate)) {
+				duccLogger.info(methodName, null,"getRequestURI():"+request.getRequestURI());
+				handleDuccServletServiceUpdate(target, baseRequest, request, response);
+				DuccWebUtil.noCache(response);
+			}
 			else if(reqURI.startsWith(duccReservationSchedulingClasses)) {
 				handleDuccServletReservationSchedulingClasses(target, baseRequest, request, response);
 				DuccWebUtil.noCache(response);
@@ -2919,6 +3168,10 @@ public class DuccHandler extends DuccAbs
 				handleDuccServletReservationFormButton(target, baseRequest, request, response);
 				DuccWebUtil.noCache(response);
 			}
+			else if(reqURI.startsWith(duccServiceUpdateFormButton)) {
+				handleDuccServletServiceUpdateFormButton(target, baseRequest, request, response);
+				DuccWebUtil.noCache(response);
+			}
 			else if(reqURI.startsWith(duccJobSubmitForm)) {
 				handleDuccServletJobSubmitForm(target, baseRequest, request, response);
 				DuccWebUtil.noCache(response);

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java?rev=1455734&r1=1455733&r2=1455734&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java Tue Mar 12 22:24:08 2013
@@ -326,7 +326,7 @@ public class DuccHandlerJsonFormat exten
 		// Description
 		sb = new StringBuffer();
 		String description = stringNormalize(job.getStandardInfo().getDescription(),messages.fetch("none"));
-		switch(getDescriptionStyle(request)) {
+		switch(DuccCookies.getDescriptionStyle(request)) {
 		case Long:
 		default:
 			sb.append("<span title=\""+DuccConstants.hintPreferencesDescriptionStyleShort+"\">");
@@ -367,7 +367,7 @@ public class DuccHandlerJsonFormat exten
 		ArrayList<String> users = getJobsUsers(request);
 		DuccData duccData = DuccData.getInstance();
 		ConcurrentSkipListMap<JobInfo,JobInfo> sortedJobs = duccData.getSortedJobs();
-		FilterUsersStyle filterUsersStyle = getFilterUsersStyle(request);
+		DuccCookies.FilterUsersStyle filterUsersStyle = DuccCookies.getFilterUsersStyle(request);
 		if(sortedJobs.size()> 0) {
 			Iterator<Entry<JobInfo, JobInfo>> iterator = sortedJobs.entrySet().iterator();
 			int counter = 0;
@@ -814,7 +814,7 @@ public class DuccHandlerJsonFormat exten
 		// Description
 		sb = new StringBuffer();
 		String description = stringNormalize(duccwork.getStandardInfo().getDescription(),messages.fetch("none"));
-		switch(getDescriptionStyle(request)) {
+		switch(DuccCookies.getDescriptionStyle(request)) {
 		case Long:
 		default:
 			sb.append("<span title=\""+DuccConstants.hintPreferencesDescriptionStyleShort+"\">");
@@ -840,7 +840,7 @@ public class DuccHandlerJsonFormat exten
 		return row;
 	}
 	
-	private boolean isListEligible(ArrayList<String> users, FilterUsersStyle filterUsersStyle, String user, boolean completed) {
+	private boolean isListEligible(ArrayList<String> users, DuccCookies.FilterUsersStyle filterUsersStyle, String user, boolean completed) {
 		boolean list = false;
 		if(!users.isEmpty()) {
 			switch(filterUsersStyle) {
@@ -898,7 +898,7 @@ public class DuccHandlerJsonFormat exten
 		ConcurrentSkipListMap<Info,Info> sortedCombinedReservations = duccData.getSortedCombinedReservations();
 
 		ArrayList<String> users = getReservationsUsers(request);
-		FilterUsersStyle filterUsersStyle = getFilterUsersStyle(request);
+		DuccCookies.FilterUsersStyle filterUsersStyle = DuccCookies.getFilterUsersStyle(request);
 		
 		if((sortedCombinedReservations.size() > 0)) {
 			int counter = 0;
@@ -1148,7 +1148,7 @@ public class DuccHandlerJsonFormat exten
 				// Description
 				StringBuffer sb = new StringBuffer();
 				String description = getValue(propertiesSvc,IStateServices.description,"");
-				switch(getDescriptionStyle(request)) {
+				switch(DuccCookies.getDescriptionStyle(request)) {
 				case Long:
 				default:
 					sb.append("<span title=\""+DuccConstants.hintPreferencesDescriptionStyleShort+"\">");
@@ -1552,7 +1552,7 @@ public class DuccHandlerJsonFormat exten
 			String name = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyDaemonName,daemonName.toString());
 			row.add(new JsonPrimitive(name));
 			// Boot Time
-			String boot = getTimeStamp(getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
+			String boot = getTimeStamp(DuccCookies.getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
 			row.add(new JsonPrimitive(boot));
 			// Host IP
 			String ip = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyNodeIpAddress,"");
@@ -1576,7 +1576,7 @@ public class DuccHandlerJsonFormat exten
 			// Heartbeat (max) TOD
 			String heartmaxTOD = TimeStamp.simpleFormat(DuccDaemonsData.getInstance().getMaxHeartbeatTOD(daemonName));
 			try {
-				heartmaxTOD = getTimeStamp(getDateStyle(request),heartmaxTOD);
+				heartmaxTOD = getTimeStamp(DuccCookies.getDateStyle(request),heartmaxTOD);
 			}
 			catch(Exception e) {
 			}
@@ -1593,8 +1593,8 @@ public class DuccHandlerJsonFormat exten
 		}
 
 		// <Agents>
-		String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieAgents);
-		if(cookie.equals(DuccWebUtil.valueAgentsShow)) {
+		String cookie = DuccCookies.getCookie(request,DuccCookies.cookieAgents);
+		if(cookie.equals(DuccCookies.valueAgentsShow)) {
 			duccLogger.trace(methodName, jobid, "== show: "+cookie);
 			
 			ConcurrentSkipListMap<String,MachineInfo> machines = DuccMachinesData.getInstance().getMachines();
@@ -1625,7 +1625,7 @@ public class DuccHandlerJsonFormat exten
 				String daemonName = "Agent";
 				row.add(new JsonPrimitive(daemonName));
 				// Boot Time
-				String bootTime = getTimeStamp(getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
+				String bootTime = getTimeStamp(DuccCookies.getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
 				row.add(new JsonPrimitive(bootTime));
 				// Host IP
 				String hostIP = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyNodeIpAddress,"");
@@ -1659,7 +1659,7 @@ public class DuccHandlerJsonFormat exten
 				if(heartbeatMaxTOD > 0) {
 					fmtHeartbeatMaxTOD = TimeStamp.simpleFormat(""+heartbeatMaxTOD);
 					try {
-						fmtHeartbeatMaxTOD = getTimeStamp(getDateStyle(request),fmtHeartbeatMaxTOD);
+						fmtHeartbeatMaxTOD = getTimeStamp(DuccCookies.getDateStyle(request),fmtHeartbeatMaxTOD);
 					}
 					catch(Exception e) {
 					}

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java?rev=1455734&r1=1455733&r2=1455734&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java Tue Mar 12 22:24:08 2013
@@ -284,7 +284,7 @@ public class DuccHandlerLegacy extends D
 		// Description
 		sb.append("<td valign=\"bottom\">");
 		String description = stringNormalize(job.getStandardInfo().getDescription(),messages.fetch("none"));
-		switch(getDescriptionStyle(request)) {
+		switch(DuccCookies.getDescriptionStyle(request)) {
 		case Long:
 		default:
 			sb.append("<span title=\""+DuccConstants.hintPreferencesDescriptionStyleShort+"\">");
@@ -322,7 +322,7 @@ public class DuccHandlerLegacy extends D
 		ArrayList<String> users = getJobsUsers(request);
 		DuccData duccData = DuccData.getInstance();
 		ConcurrentSkipListMap<JobInfo,JobInfo> sortedJobs = duccData.getSortedJobs();
-		FilterUsersStyle filterUsersStyle = getFilterUsersStyle(request);
+		DuccCookies.FilterUsersStyle filterUsersStyle = DuccCookies.getFilterUsersStyle(request);
 		if(sortedJobs.size()> 0) {
 			Iterator<Entry<JobInfo, JobInfo>> iterator = sortedJobs.entrySet().iterator();
 			int counter = 0;
@@ -721,7 +721,7 @@ public class DuccHandlerLegacy extends D
 		// Description
 		sb.append("<td>");
 		String description = stringNormalize(duccwork.getStandardInfo().getDescription(),messages.fetch("none"));
-		switch(getDescriptionStyle(request)) {
+		switch(DuccCookies.getDescriptionStyle(request)) {
 		case Long:
 		default:
 			sb.append("<span title=\""+DuccConstants.hintPreferencesDescriptionStyleShort+"\">");
@@ -746,7 +746,7 @@ public class DuccHandlerLegacy extends D
 		sb.append("</tr>");
 	}
 	
-	private boolean isListEligible(ArrayList<String> users, FilterUsersStyle filterUsersStyle, String user, boolean completed) {
+	private boolean isListEligible(ArrayList<String> users, DuccCookies.FilterUsersStyle filterUsersStyle, String user, boolean completed) {
 		boolean list = false;
 		if(!users.isEmpty()) {
 			switch(filterUsersStyle) {
@@ -802,7 +802,7 @@ public class DuccHandlerLegacy extends D
 		ConcurrentSkipListMap<Info,Info> sortedCombinedReservations = duccData.getSortedCombinedReservations();
 
 		ArrayList<String> users = getReservationsUsers(request);
-		FilterUsersStyle filterUsersStyle = getFilterUsersStyle(request);
+		DuccCookies.FilterUsersStyle filterUsersStyle = DuccCookies.getFilterUsersStyle(request);
 		
 		if((sortedCombinedReservations.size() > 0)) {
 			int counter = 0;
@@ -1029,7 +1029,7 @@ public class DuccHandlerLegacy extends D
 				// Description
 				sb.append("<td>");
 				String description = getValue(propertiesSvc,IServicesRegistry.description,"");
-				switch(getDescriptionStyle(request)) {
+				switch(DuccCookies.getDescriptionStyle(request)) {
 				case Long:
 				default:
 					sb.append("<span title=\""+DuccConstants.hintPreferencesDescriptionStyleShort+"\">");
@@ -1252,7 +1252,7 @@ public class DuccHandlerLegacy extends D
 			sb.append("</td>");
 			// Boot Time
 			sb.append("<td>");
-			sb.append(getTimeStamp(getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,"")));
+			sb.append(getTimeStamp(DuccCookies.getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,"")));
 			sb.append("</td>");
 			// Host IP
 			sb.append("<td>");
@@ -1288,7 +1288,7 @@ public class DuccHandlerLegacy extends D
 			sb.append("<td>");
 			String heartmaxTOD = TimeStamp.simpleFormat(DuccDaemonsData.getInstance().getMaxHeartbeatTOD(daemonName));
 			try {
-				heartmaxTOD = getTimeStamp(getDateStyle(request),heartmaxTOD);
+				heartmaxTOD = getTimeStamp(DuccCookies.getDateStyle(request),heartmaxTOD);
 			}
 			catch(Exception e) {
 			}
@@ -1306,8 +1306,8 @@ public class DuccHandlerLegacy extends D
 			counter++;
 		}
 		// <Agents>
-		String cookie = DuccWebUtil.getCookie(request,DuccWebUtil.cookieAgents);
-		if(cookie.equals(DuccWebUtil.valueAgentsShow)) {
+		String cookie = DuccCookies.getCookie(request,DuccCookies.cookieAgents);
+		if(cookie.equals(DuccCookies.valueAgentsShow)) {
 			duccLogger.trace(methodName, jobid, "== show: "+cookie);
 			
 			ConcurrentSkipListMap<String,MachineInfo> machines = DuccMachinesData.getInstance().getMachines();
@@ -1343,7 +1343,7 @@ public class DuccHandlerLegacy extends D
 				sb.append(daemonName);
 				sb.append("</td>");	
 				// Boot Time
-				String bootTime = getTimeStamp(getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
+				String bootTime = getTimeStamp(DuccCookies.getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
 				sb.append("<td>");
 				sb.append(bootTime);
 				sb.append("</td>");
@@ -1390,7 +1390,7 @@ public class DuccHandlerLegacy extends D
 				if(heartbeatMaxTOD > 0) {
 					fmtHeartbeatMaxTOD = TimeStamp.simpleFormat(""+heartbeatMaxTOD);
 					try {
-						fmtHeartbeatMaxTOD = getTimeStamp(getDateStyle(request),fmtHeartbeatMaxTOD);
+						fmtHeartbeatMaxTOD = getTimeStamp(DuccCookies.getDateStyle(request),fmtHeartbeatMaxTOD);
 					}
 					catch(Exception e) {
 					}

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebJobSpecificationProperties.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebJobSpecificationProperties.java?rev=1455734&r1=1455733&r2=1455734&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebJobSpecificationProperties.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebJobSpecificationProperties.java Tue Mar 12 22:24:08 2013
@@ -113,28 +113,28 @@ public class DuccWebJobSpecificationProp
 		sb.append(entry(descriptionWithExample(DuccUiConstants.desc_jvm,DuccUiConstants.exmp_jvm),
 				key_jvm,
 				DuccUiConstants.labl_jvm,
-				presetValue(DuccWebUtil.getCookieOrNull(request,DuccWebUtil.getCookieKey(DuccUiConstants.name_jvm)),DuccUiConstants.dval_jvm),
+				presetValue(DuccCookies.getCookieOrNull(request,DuccCookies.getCookieKey(DuccUiConstants.name_jvm)),DuccUiConstants.dval_jvm),
 				null
 				));
 		
 		sb.append(entry(descriptionWithExample(DuccUiConstants.desc_scheduling_class,DuccUiConstants.exmp_scheduling_class),
 				key_scheduling_class,
 				DuccUiConstants.labl_scheduling_class,
-				presetValue(DuccWebUtil.getCookieOrNull(request,DuccWebUtil.getCookieKey(DuccUiConstants.name_scheduling_class)),DuccUiConstants.dval_scheduling_class),
+				presetValue(DuccCookies.getCookieOrNull(request,DuccCookies.getCookieKey(DuccUiConstants.name_scheduling_class)),DuccUiConstants.dval_scheduling_class),
 				schedulerClasses.getJobClasses()
 				));
 		
 		sb.append(entry(descriptionWithExample(DuccUiConstants.desc_log_directory,DuccUiConstants.exmp_log_directory),
 				key_log_directory,
 				DuccUiConstants.labl_log_directory,
-				presetValue(DuccWebUtil.getCookieOrNull(request,DuccWebUtil.getCookieKey(DuccUiConstants.name_log_directory)),DuccUiConstants.dval_log_directory),
+				presetValue(DuccCookies.getCookieOrNull(request,DuccCookies.getCookieKey(DuccUiConstants.name_log_directory)),DuccUiConstants.dval_log_directory),
 				null
 				));
 		
 		sb.append(entry(descriptionWithExample(DuccUiConstants.desc_working_directory,DuccUiConstants.exmp_working_directory),
 				key_working_directory,
 				DuccUiConstants.labl_working_directory,
-				presetValue(DuccWebUtil.getCookieOrNull(request,DuccWebUtil.getCookieKey(DuccUiConstants.name_working_directory)),DuccUiConstants.dval_working_directory),
+				presetValue(DuccCookies.getCookieOrNull(request,DuccCookies.getCookieKey(DuccUiConstants.name_working_directory)),DuccUiConstants.dval_working_directory),
 				null
 				));
 		
@@ -246,33 +246,33 @@ public class DuccWebJobSpecificationProp
 		sb.append(entry(DuccUiConstants.desc_process_deployments_max,
 				key_process_deployments_max,
 				DuccUiConstants.labl_process_deployments_max,
-				presetValue(DuccWebUtil.getCookieOrNull(request,DuccWebUtil.getCookieKey(DuccUiConstants.name_process_deployments_max)),DuccUiConstants.dval_process_deployments_max),
+				presetValue(DuccCookies.getCookieOrNull(request,DuccCookies.getCookieKey(DuccUiConstants.name_process_deployments_max)),DuccUiConstants.dval_process_deployments_max),
 				null
 		));
 		/*
 		sb.append(entry(DuccUiConstants.desc_process_deployments_min,
 				key_process_deployments_min,
 				DuccUiConstants.labl_process_deployments_min,
-				presetValue(DuccWebUtil.getCookieOrNull(request,DuccWebUtil.getCookieKey(DuccUiConstants.name_process_deployments_min)),DuccUiConstants.dval_process_deployments_min),
+				presetValue(DuccCookies.getCookieOrNull(request,DuccCookies.getCookieKey(DuccUiConstants.name_process_deployments_min)),DuccUiConstants.dval_process_deployments_min),
 				null
 		));
 		*/
 		sb.append(entry(DuccUiConstants.desc_process_thread_count,
 				key_process_thread_count,
 				DuccUiConstants.labl_process_thread_count,
-				presetValue(DuccWebUtil.getCookieOrNull(request,DuccWebUtil.getCookieKey(DuccUiConstants.name_process_thread_count)),DuccUiConstants.dval_process_thread_count),
+				presetValue(DuccCookies.getCookieOrNull(request,DuccCookies.getCookieKey(DuccUiConstants.name_process_thread_count)),DuccUiConstants.dval_process_thread_count),
 				null
 		));
 		sb.append(entry(DuccUiConstants.desc_process_get_meta_time_max,
 				key_process_get_meta_time_max,
 				DuccUiConstants.labl_process_get_meta_time_max,
-				presetValue(DuccWebUtil.getCookieOrNull(request,DuccWebUtil.getCookieKey(DuccUiConstants.name_process_get_meta_time_max)),DuccUiConstants.dval_process_get_meta_time_max),
+				presetValue(DuccCookies.getCookieOrNull(request,DuccCookies.getCookieKey(DuccUiConstants.name_process_get_meta_time_max)),DuccUiConstants.dval_process_get_meta_time_max),
 				null
 		));
 		sb.append(entry(DuccUiConstants.desc_process_per_item_time_max,
 				key_process_per_item_time_max,
 				DuccUiConstants.labl_process_per_item_time_max,
-				presetValue(DuccWebUtil.getCookieOrNull(request,DuccWebUtil.getCookieKey(DuccUiConstants.name_process_per_item_time_max)),DuccUiConstants.dval_process_per_item_time_max),
+				presetValue(DuccCookies.getCookieOrNull(request,DuccCookies.getCookieKey(DuccUiConstants.name_process_per_item_time_max)),DuccUiConstants.dval_process_per_item_time_max),
 				null
 		));
 		

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebUtil.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebUtil.java?rev=1455734&r1=1455733&r2=1455734&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebUtil.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebUtil.java Tue Mar 12 22:24:08 2013
@@ -18,128 +18,10 @@
 */
 package org.apache.uima.ducc.ws.server;
 
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.uima.ducc.common.internationalization.Messages;
-import org.apache.uima.ducc.common.utils.DuccLogger;
-import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
-
-
 public class DuccWebUtil {
-	
-	private static DuccLogger duccLogger = DuccLoggerComponents.getWsLogger(DuccWebUtil.class.getName());
-	private static Messages messages = Messages.getInstance();
-	
-	public static final String cookieUri = "/";
-	
-	private static final String join = ":";
-	
-	private static final String application = "ducc";
-	
-	private static final String jobs = "jobs";
-	private static final String reservations = "reservations";
-	private static final String services = "services";
-	
-	private static final String max = "max";
-	private static final String users = "users";
-	//private static final String qualifier = "qualifier";
-	
-	public static final String cookieJobsMax = application+join+jobs+max;
-	public static final String cookieJobsUsers = application+join+jobs+users;
-	//public static final String cookieJobsUsersQualifier = application+join+jobs+users+qualifier;
-	public static final String cookieReservationsMax = application+join+reservations+max;
-	public static final String cookieReservationsUsers = application+join+reservations+users;
-	//public static final String cookieReservationsUsersQualifier = application+join+reservations+users+qualifier;
-	public static final String cookieServicesMax = application+join+services+max;
-	public static final String cookieServicesUsers = application+join+services+users;
-	//public static final String cookieServicesUsersQualifier = application+join+services+users+qualifier;
-	
-	private static final String agents = "agents";
-	
-	public static final String cookieAgents = application+join+agents;
-	public static final String valueAgentsShow = "show";
-	
-	private static final String table_style = "table_style";
-	private static final String date_style = "date_style";
-	private static final String description_style = "description_style";
-	private static final String filter_users_style = "filter_users_style";
-	private static final String role = "role";
-	
-	public static final String cookieStyleTable = application+join+table_style;
-	public static final String cookieStyleDate = application+join+date_style;
-	public static final String cookieStyleDescription = application+join+description_style;
-	public static final String cookieStyleFilterUsers = application+join+filter_users_style;
-	public static final String cookieRole = application+join+role;
-	
-	public static final String valueStyleDateLong = "long";
-	public static final String valueStyleDateMedium = "medium";
-	public static final String valueStyleDateShort = "short";
-	public static final String valueStyleDateDefault = valueStyleDateLong;
-	
-	public static final String valueStyleDescriptionLong = "long";
-	public static final String valueStyleDescriptionShort = "short";
-	public static final String valueStyleDescriptionDefault = valueStyleDescriptionLong;
-	
-	public static final String valueStyleFilterUsersInclude = "include";
-	public static final String valueStyleFilterUsersIncludePlusActive = "include+active";
-	public static final String valueStyleFilterUsersExclude = "exclude";
-	public static final String valueStyleFilterUsersExcludePlusActive = "exclude+active";
-	
-	public static final String valueRoleAdministrator = "administrator";
-	public static final String valueRoleUser = "user";
 
-	protected static final String getCookieKey(String name) {
-		return application+join+"name";
-	}
-	
-	protected static String getCookie(String defaultValue, HttpServletRequest request, String name) {
-		String methodName = "getCookie";
-		String retVal = defaultValue;
-		Cookie[] cookies = request.getCookies();
-		if(cookies != null) {
-			for(int i=0; i < cookies.length; i++) {
-				Cookie cookie = cookies[i];
-				if(cookie != null) {
-					String cookieName = cookie.getName();
-					if(cookieName != null) {
-						if(cookieName.equals(name)) {
-							retVal = cookie.getValue();
-							break;
-						}
-					}
-				}
-			}
-		}
-		duccLogger.debug(methodName, null, messages.fetchLabel("name")+name+" "+messages.fetchLabel("value")+retVal);
-		return retVal;
-	}
-	
-	protected static String getCookie(HttpServletRequest request, String name) {
-		return getCookie("",request,name);
-	}
-	
-	protected static String getCookieOrNull(HttpServletRequest request, String name) {
-		return getCookie(null,request,name);
-	}
-	
-	protected static void putCookie(HttpServletResponse response, String name, String value) {
-		String methodName = "putCookie";
-		Cookie cookie = new Cookie(name, value);
-		cookie.setPath(cookieUri);
-		response.addCookie(cookie);
-		duccLogger.debug(methodName, null, messages.fetchLabel("name")+name+" "+messages.fetchLabel("value")+value);
-	}
-	
-	protected static void expireCookie(HttpServletResponse response, String name, String value) {
-		String methodName = "expireCookie";
-		Cookie cookie = new Cookie(name, value);
-		cookie.setMaxAge(0);
-		response.addCookie(cookie);
-		duccLogger.debug(methodName, null, messages.fetchLabel("name")+name+" "+messages.fetchLabel("value")+value);
-	}
-	
 	/*
 	@Deprecated
 	protected String getUserHome(String userName) throws IOException{

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.js
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.js?rev=1455734&r1=1455733&r2=1455734&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.js (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/js/ducc.js Tue Mar 12 22:24:08 2013
@@ -553,6 +553,23 @@ function ducc_load_service_registry_data
 	}	
 }
 
+function ducc_service_update_form_button()
+{
+	try {
+		$.ajax(
+		{
+			url : "/ducc-servlet/service-update-get-form-button"+location.search,
+			success : function (data) 
+			{
+				$("#service_update_form_button").html(data);
+			}
+		});
+	}
+	catch(err) {
+		ducc_error("ducc_service_update_form_button",err);
+	}
+}
+
 function ducc_load_service_deployments_data()
 {
 	try {
@@ -1303,6 +1320,7 @@ function ducc_init(type)
 			ducc_load_service_summary_data();
 			ducc_load_service_deployments_data();
 			ducc_load_service_registry_data();
+			ducc_service_update_form_button();
 		}
 		if(type == "system-machines") {
 			ducc_init_machines_data();
@@ -2168,6 +2186,35 @@ function ducc_submit_reservation()
 	return false;
 }
 
+function ducc_update_service(name)
+{
+	try {
+		var e = document.getElementById("autostart");
+		var autostart = e.options[e.selectedIndex].value;
+		var e = document.getElementById("instances");
+		var instances = e.value;
+		document.getElementById("update_button").disabled = 'disabled';
+		$.ajax(
+		{
+			type: 'POST',
+			async: false,
+			url : "/ducc-servlet/service-update-request",
+			data: {'id':name,'autostart':autostart,'instances':instances},
+			success : function (data) 
+			{
+				$.jGrowl(data, { life: 15000 });
+				setTimeout(function(){window.close();}, 15000);
+			}
+		});
+		setTimeout(function(){window.close();}, 15000);
+		document.getElementById("update_button").disabled = '';
+	}
+	catch(err) {
+		ducc_error("ducc_update_service",err);
+	}		
+	return false;
+}
+
 function ducc_put_cookie(name,value)
 {
 	try {

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/opensources/images/220px-Harlem_viaduct.jpg
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/opensources/images/220px-Harlem_viaduct.jpg?rev=1455734&view=auto
==============================================================================
Binary file - no diff available.

Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/opensources/images/220px-Harlem_viaduct.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/service.details.jsp
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/service.details.jsp?rev=1455734&r1=1455733&r2=1455734&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/service.details.jsp (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/service.details.jsp Tue Mar 12 22:24:08 2013
@@ -85,6 +85,9 @@ under the License.
 			    <%@ include file="service.details.table.deployments.jsp" %>
 			</div>
 			<div id="tabs-2">
+				<div id="service_update_form_button">
+				<button title="Hint: Login" disabled style="font-size:8pt;">Update</button>
+				</div>
    				<div class="registry_data_div">
    					<span id="registry_data_area"></span>
    				</div>