henning 2003/04/04 05:06:43
Modified: proposals/henning/new-uri/src/java/org/apache/turbine/util/uri
BaseURI.java DataURI.java TemplateURI.java
TurbineURI.java URIParam.java URIUtils.java
Added: proposals/henning/new-uri/src/test/org/apache/turbine/util/uri
TurbineURITest.java
Log:
- Removed the same ConcurrentModification Bug as in DynamicURI.
- Removed a try { } catch() from the remove which masked the
CME Bug.
- Cleaned the code up a little.
- Added a test to the proposal (shamelessly stolen from Quinton. ;-) )
Revision Changes Path
1.2 +4 -4
jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/BaseURI.java
Index: BaseURI.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/BaseURI.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BaseURI.java 2 Apr 2003 17:11:33 -0000 1.1
+++ BaseURI.java 4 Apr 2003 13:06:43 -0000 1.2
@@ -436,7 +436,7 @@
}
/**
- * Appends Context Path and Script Name to the passed
+ * Append the Context Path and Script Name to the passed
* String Buffer.
*
* <p>
@@ -487,9 +487,9 @@
{
// http(s)://<servername>
sb.append(getServerScheme());
- sb.append("://");
+ sb.append(URIConstants.URI_SCHEME_SEPARATOR);
sb.append(getServerName());
-
+
// (:<port>)
if ((getServerScheme().equals(HTTP)
&& getServerPort() != HTTP_PORT)
1.2 +3 -3
jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/DataURI.java
Index: DataURI.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/DataURI.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DataURI.java 2 Apr 2003 17:11:33 -0000 1.1
+++ DataURI.java 4 Apr 2003 13:06:43 -0000 1.2
@@ -73,8 +73,8 @@
*/
public class DataURI
- extends BaseURI
- implements URIConstants
+ extends BaseURI
+ implements URIConstants
{
/**
* Empty C'tor. Uses Turbine.getDefaultServerData().
1.2 +6 -6
jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/TemplateURI.java
Index: TemplateURI.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/TemplateURI.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TemplateURI.java 2 Apr 2003 17:11:33 -0000 1.1
+++ TemplateURI.java 4 Apr 2003 13:06:43 -0000 1.2
@@ -65,7 +65,7 @@
/**
* This class allows you to keep all the information needed for a single
* link at one place. It keeps your query data, path info, the server
- * scheme, name, port and the script path. It is tuned for usage with a
+ * scheme, name, port and the script path. It is tuned for usage with a
* Template System e.g. Velocity.
*
* If you must generate a Turbine Link in a Template System, use this class.
@@ -75,7 +75,7 @@
*/
public class TemplateURI
- extends TurbineURI
+ extends TurbineURI
{
/**
* Empty C'tor. Uses Turbine.getDefaultServerData().
@@ -299,15 +299,15 @@
* @param pp A ParameterParser.
*/
protected void add(int type,
- ParameterParser pp)
+ ParameterParser pp)
{
for(Enumeration e = pp.keys(); e.hasMoreElements(); )
{
String key = (String) e.nextElement();
if (!key.equalsIgnoreCase(CGI_ACTION_PARAM) &&
- !key.equalsIgnoreCase(CGI_SCREEN_PARAM) &&
- !key.equalsIgnoreCase(CGI_TEMPLATE_PARAM))
+ !key.equalsIgnoreCase(CGI_SCREEN_PARAM) &&
+ !key.equalsIgnoreCase(CGI_TEMPLATE_PARAM))
{
String[] values = pp.getStrings(key);
for (int i = 0; i < values.length; i++)
1.2 +12 -21
jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/TurbineURI.java
Index: TurbineURI.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/TurbineURI.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TurbineURI.java 2 Apr 2003 17:11:33 -0000 1.1
+++ TurbineURI.java 4 Apr 2003 13:06:43 -0000 1.2
@@ -683,7 +683,6 @@
}
}
-
/**
* Gets the current Query Data List.
*
@@ -788,7 +787,7 @@
{
if(!list.isEmpty())
{
- for(Iterator it = list.iterator(); it.hasNext(); )
+ for(Iterator it = list.iterator(); it.hasNext();)
{
URIParam uriParam = (URIParam) it.next();
String key = URLEncoder.encode((String) uriParam.getKey());
@@ -852,7 +851,7 @@
protected void add(int type,
ParameterParser pp)
{
- for(Enumeration e = pp.keys(); e.hasMoreElements(); )
+ for(Enumeration e = pp.keys(); e.hasMoreElements();)
{
String key = (String) e.nextElement();
@@ -885,7 +884,7 @@
protected void add(int type,
List list)
{
- for (Iterator it = list.iterator(); it.hasNext(); )
+ for (Iterator it = list.iterator(); it.hasNext();)
{
// Strictly spoken we don't need this cast. But if we do,
// we get class cast right here is someone tries to put
@@ -908,25 +907,17 @@
protected void remove (int type,
String name)
{
- try
+ Collection c = dataVectors[type];
+ String key = ParserUtils.convertAndTrim(name);
+
+ for (Iterator it = c.iterator(); it.hasNext();)
{
- Collection c = dataVectors[type];
- String key = ParserUtils.convertAndTrim(name);
-
- for (Iterator it = c.iterator(); it.hasNext(); )
+ URIParam uriParam = (URIParam) it.next();
+
+ if (key.equals(uriParam.getKey()))
{
- URIParam uriParam = (URIParam) it.next();
-
- if (key.equals(uriParam.getKey()))
- {
- c.remove(uriParam);
- }
+ it.remove();
}
}
- catch (Exception e)
- {
- log.error("remove(): ", e);
- }
}
-
}
1.2 +1 -1
jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/URIParam.java
Index: URIParam.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/URIParam.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
1.2 +1 -1
jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/URIUtils.java
Index: URIUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/proposals/henning/new-uri/src/java/org/apache/turbine/util/uri/URIUtils.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
1.1
jakarta-turbine-2/proposals/henning/new-uri/src/test/org/apache/turbine/util/uri/TurbineURITest.java
Index: TurbineURITest.java
===================================================================
package org.apache.turbine.util.uri;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Turbine" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Turbine", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.commons.configuration.BaseConfiguration;
import org.apache.commons.configuration.Configuration;
import org.apache.fulcrum.ServiceManager;
import org.apache.fulcrum.TurbineServices;
import org.apache.fulcrum.util.parser.ParserUtils;
import org.apache.turbine.util.ServerData;
/**
* Testing of the TurbineURI class
*
* @author <a href="mailto:[EMAIL PROTECTED]">Quinton McCombs</a>
* @version $Id: TurbineURITest.java,v 1.1 2003/04/04 13:06:43 henning Exp $
*/
public class TurbineURITest extends TestCase
{
private TurbineURI turi;
/**
* Constructor for test.
*
* @param testName name of the test being executed
*/
public TurbineURITest(String testName)
{
super(testName);
// Setup configuration
ServiceManager serviceManager = TurbineServices.getInstance();
serviceManager.setApplicationRoot(".");
Configuration cfg = new BaseConfiguration();
cfg.setProperty(ParserUtils.URL_CASE_FOLDING_KEY,
ParserUtils.URL_CASE_FOLDING_LOWER_VALUE );
serviceManager.setConfiguration(cfg);
}
/**
* Performs any initialization that must happen before each test is run.
*/
protected void setUp()
{
ServerData sd = new ServerData("www.testserver.com",
URIConstants.HTTP_PORT, URIConstants.HTTP,
"/servlet/turbine", "/context");
turi = new TurbineURI(sd);
}
/**
* Clean up after each test is run.
*/
protected void tearDown()
{
turi = null;
}
/**
* Factory method for creating a TestSuite for this class.
*
* @return the test suite
*/
public static TestSuite suite()
{
TestSuite suite = new TestSuite(TurbineURITest.class);
return suite;
}
public void testAddRemove()
{
assertEquals("TurbineURI should not have a pathInfo", false,
turi.hasPathInfo());
assertEquals("TurbineURI must not have a queryData", false,
turi.hasQueryData());
turi.addPathInfo("test","x");
assertEquals("TurbineURI must have a pathInfo", true, turi.hasPathInfo());
assertEquals("TurbineURI must not have a queryData", false,
turi.hasQueryData());
turi.removePathInfo("test");
assertEquals("TurbineURI must not have a pathInfo", false,
turi.hasPathInfo());
assertEquals("TurbineURI must not have a queryData", false,
turi.hasQueryData());
assertEquals("TurbineURI should not have a queryData", false,
turi.hasQueryData());
assertEquals("TurbineURI must not have a pathInfo", false,
turi.hasPathInfo());
turi.addQueryData("test","x");
assertEquals("TurbineURI must have a queryData", true, turi.hasQueryData());
assertEquals("TurbineURI must not have a pathInfo", false,
turi.hasPathInfo());
turi.removeQueryData("test");
assertEquals("TurbineURI must not have a queryData", false,
turi.hasQueryData());
assertEquals("TurbineURI must not have a pathInfo", false,
turi.hasPathInfo());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]