You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by km...@apache.org on 2005/11/11 05:22:46 UTC

svn commit: r332444 - in /db/derby/code/trunk/java/drda/org/apache/derby: drda/NetServlet.java loc/drda/servlet_en.properties

Author: kmarsden
Date: Thu Nov 10 20:22:43 2005
New Revision: 332444

URL: http://svn.apache.org/viewcvs?rev=332444&view=rev
Log:
DERBY-117 Improvements to the Servlet

- improved use of tracingDirectory:
  * init-parameter is now used (it was documented but not used before)
  * current value is shown when the user try to change it
- improved function that handles the request locale (for instance, mozilla uses a - instead of _ to separate the country from language)
- shows on the screen which port the server is running on
  * added a new SRV_POrtNumber message key for such info

Note: I did not commit the translated messages as I could not get them to patch.

Contributed by Filipe Leme 


Modified:
    db/derby/code/trunk/java/drda/org/apache/derby/drda/NetServlet.java
    db/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_en.properties

Modified: db/derby/code/trunk/java/drda/org/apache/derby/drda/NetServlet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/drda/org/apache/derby/drda/NetServlet.java?rev=332444&r1=332443&r2=332444&view=diff
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/drda/NetServlet.java (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/drda/NetServlet.java Thu Nov 10 20:22:43 2005
@@ -23,12 +23,10 @@
 import java.io.*;
 import java.util.*;
 
-import java.sql.*;
 import java.net.*;
 
 import java.security.AccessController;
 import java.security.PrivilegedExceptionAction;
-import java.security.PrivilegedActionException;
 
 import javax.servlet.*;
 import javax.servlet.http.*;
@@ -60,7 +58,7 @@
 	private boolean logStatus= false;	/* Logging off */
 	private boolean traceStatus = false;	/* Tracing off */
 	private String[] knownLang = {"en","es","de_DE", "fr", "it", "ja_JP",
-			"ko_KR", "zh_CN", "zh_TW"};
+			"ko_KR", "pt_BR", "zh_CN", "zh_TW"};
 	private String locale;
 
 	private final static int NOT_GIVEN = -2;
@@ -71,7 +69,7 @@
 
 	// for doPri block
 	private Runnable service;
-
+	
 	/**
 		Initialize the servlet.
 		Configuration parameters:
@@ -84,7 +82,7 @@
 	public void init(ServletConfig config)
 		throws ServletException
 	{
-
+		
 		LocalizedResource langUtil = new LocalizedResource(null,null,SERVLET_PROP_MESSAGES);
 				
 		String port = config.getInitParameter("portNumber");
@@ -94,15 +92,25 @@
 				portNumber = p;
 		}
 
-		String tracingDirectory = config.getInitParameter("tracingDirectory");
+		this.tracingDirectory = config.getInitParameter("tracingDirectory");
+		
+		if ( this.tracingDirectory == null ) {
+			this.tracingDirectory = "";
+		}
 
 		String startup = config.getInitParameter("startNetworkServerOnInit");
 
 		// test if the server is already running
 		try {
 			//don't send output to console
-			if (server == null)
+			if (server == null) {
 				server = new NetworkServerControl(InetAddress.getByName(host), portNumber);
+				// assert this.tracingDirectory != null
+				if  ( ! this.tracingDirectory.trim().equals("")) {
+					server.setTraceDirectory(this.tracingDirectory);
+				}
+			}
+			
 			if (isServerStarted(server,1))
 				return;
 		} catch (Exception e) {}
@@ -401,7 +409,7 @@
 				out.println( "<h4>" + getHtmlLabelledMessageInstance(langUtil,
 					"SRV_TraceDir", "tracedir") + "</h4>");
 				out.println( "<INPUT type=text name=tracedirectory size=60 maxlength=256 " +
-					"id='tracedir' value=''>");
+					"id='tracedir' value='"+tracingDirectory+"'>");
 				out.println( "<h4> </h4>");
 				out.println( "<INPUT type=submit name=doaction value='"+traceDirMessage+ "'>" );
 				out.println( "<INPUT type=submit name=form value='"+returnMessage+ "'>" );
@@ -658,6 +666,9 @@
 				out.println( "<h4>"+localUtil.getTextMessage("SRV_StatusTraceOn")+"</h4>");
 			else
 				out.println( "<h4>"+localUtil.getTextMessage("SRV_StatusTraceOff")+"</h4>");
+			val = p.getProperty(Property.DRDA_PROP_PORTNUMBER);
+			out.println( "<h4>"+localUtil.getTextMessage("SRV_PortNumber", val)+"</h4>");
+			
 		}
 		catch (Exception e) {
 			printErrorForm(localUtil, request, e, returnMessage);
@@ -789,6 +800,7 @@
 		}
 
 		try {
+			this.tracingDirectory = traceDirectory;
 			server.setTraceDirectory(traceDirectory);
 			retval = true;
 		} catch (Exception e) 
@@ -938,9 +950,8 @@
 		{
 			lang = lang.substring(0, semi);
 		}
-		// trim any whitespace
-		lang = lang.trim();
-		
+		// trim any whitespace and fix the code, as some browsers might send a bad format
+		lang = fixLanguageCode(lang.trim());
 		return lang;
 	}
 	/**
@@ -952,10 +963,36 @@
 	 */
 	private int translationAvailable(String lang)
 	{
+		// assert lang == fixLanguageCode(lang)
+		// we don't need to use toUpperCase() anymore, as the lang is already fixed
 		for (int i = 0; i < knownLang.length; i++)
-			if (knownLang[i].toUpperCase(Locale.ENGLISH).equals(lang.toUpperCase(Locale.ENGLISH)))
+			if (knownLang[i].equals(lang))
 				return i;
 		return -1;
+	}
+	
+	/**
+	 * Fix the language code, as some browsers send then in a bad format (for instance, 
+	 * Firefox sends en-us instead of en_US).
+	 *
+	 * @param lang	language to be fixed
+	 * 
+	 * @return fixed version of the language, with _ separating parts and country in upper case
+	 */
+	private String fixLanguageCode( String lang ) {
+		int index = lang.indexOf('-');
+		if ( index != -1 ) {		
+			return fixLanguageCode( lang, index );
+		}
+		index = lang.indexOf('_');
+		if ( index != -1 ) {		
+			return fixLanguageCode( lang, index );
+		}
+		return lang;
+	}
+
+	private String fixLanguageCode(String lang, int index) {
+		return lang.substring(0,index) + "_" + lang.substring(index+1).toUpperCase(Locale.ENGLISH);
 	}
 
 	/**

Modified: db/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_en.properties
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_en.properties?rev=332444&r1=332443&r2=332444&view=diff
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_en.properties (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_en.properties Thu Nov 10 20:22:43 2005
@@ -1,8 +1,8 @@
 # This file contains the text for Net Server servlet
 # The format is SRV_<short desc>
 
-SRV_Banner= Derby Network Server 
-SRV_Started= Derby Network Server has been started.
+SRV_Banner=Derby Network Server 
+SRV_Started=Derby Network Server has been started.
 SRV_StopButton=Press the button to stop the Network Server.
 SRV_NotStarted=The  Derby Network Server has not been started.
 SRV_LogOnButton=Press the button to turn logging on when the server is started.
@@ -50,4 +50,4 @@
 SRV_MissingParam=Required parameter not set ("{0}")
 SRV_BackToMain=Back to Main Page
 SRV_SkipToContent=Skip to Content
-
+SRV_PortNumber=Server is running on port {0}.