You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by tv...@apache.org on 2008/04/08 15:13:47 UTC

svn commit: r645898 - in /turbine/core/trunk: src/java/org/apache/turbine/services/rundata/ src/test/org/apache/turbine/modules/ src/test/org/apache/turbine/util/parser/ src/test/org/apache/turbine/util/uri/ xdocs/

Author: tv
Date: Tue Apr  8 06:13:46 2008
New Revision: 645898

URL: http://svn.apache.org/viewvc?rev=645898&view=rev
Log:
Make sure that Turbine uses the ParserService to get correctly initialized parser objects. Change test cases to reflect this. Fixes TRB-39

Modified:
    turbine/core/trunk/src/java/org/apache/turbine/services/rundata/TurbineRunDataService.java
    turbine/core/trunk/src/test/org/apache/turbine/modules/ActionLoaderTest.java
    turbine/core/trunk/src/test/org/apache/turbine/util/parser/BaseValueParserTest.java
    turbine/core/trunk/src/test/org/apache/turbine/util/uri/TurbineURITest.java
    turbine/core/trunk/xdocs/changes.xml

Modified: turbine/core/trunk/src/java/org/apache/turbine/services/rundata/TurbineRunDataService.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/rundata/TurbineRunDataService.java?rev=645898&r1=645897&r2=645898&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/services/rundata/TurbineRunDataService.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/services/rundata/TurbineRunDataService.java Tue Apr  8 06:13:46 2008
@@ -46,6 +46,7 @@
 import org.apache.fulcrum.parser.DefaultCookieParser;
 import org.apache.fulcrum.parser.DefaultParameterParser;
 import org.apache.fulcrum.parser.ParameterParser;
+import org.apache.fulcrum.parser.ParserService;
 
 /**
  * The RunData Service provides the implementations for RunData and
@@ -81,6 +82,9 @@
     /** Private reference to the pool service for object recycling */
     private PoolService pool = null;
 
+    /** Private reference to the parser service for parser recycling */
+    private ParserService parserService = null;
+
     /**
      * Constructs a RunData Service.
      */
@@ -147,12 +151,26 @@
 		catch (ServiceException se) {
 			throw new InitializationException("Problem looking up Pool Service:" + se);
 		}
+        
         if (pool == null)
         {
             throw new InitializationException("RunData Service requires"
                 + " configured Pool Service!");
         }
 
+        try {
+            parserService = (ParserService)acs.lookup(ParserService.ROLE);
+        }
+        catch (ServiceException se) {
+            throw new InitializationException("Problem looking up Parser Service:" + se);
+        }
+        
+        if (parserService == null)
+        {
+            throw new InitializationException("RunData Service requires"
+                + " configured Parser Service!");
+        }
+
         setInit(true);
     }
 
@@ -218,14 +236,14 @@
         TurbineRunData data;
         try
         {
-        		Class runDataClazz = Class.forName(cfg[0]);
-        		Class parameterParserClazz = Class.forName(cfg[1]);
-        		Class cookieParserClazz = Class.forName(cfg[2]);
+    		Class runDataClazz = Class.forName(cfg[0]);
+    		Class parameterParserClazz = Class.forName(cfg[1]);
+    		Class cookieParserClazz = Class.forName(cfg[2]);
 
             data = (TurbineRunData) pool.getInstance(runDataClazz);
-            ParameterParser pp = (ParameterParser) pool.getInstance(parameterParserClazz);
+            ParameterParser pp = (ParameterParser) parserService.getParser(parameterParserClazz);
             data.setParameterParser(pp);
-            CookieParser cp = (CookieParser) pool.getInstance(cookieParserClazz);
+            CookieParser cp = (CookieParser) parserService.getParser(cookieParserClazz);
             data.setCookieParser(cp);
             // also copy data directly into pipelineData
             pipelineDataMap.put(ParameterParser.class, pp);
@@ -243,6 +261,10 @@
         {
             throw new TurbineException("RunData configuration '" + key + "' is illegal", x);
         }
+        catch (InstantiationException e)
+        {
+            throw new TurbineException("RunData configuration '" + key + "' is illegal", e);
+        }
 
         // Set the request and response.
         data.setRequest(req);
@@ -277,8 +299,8 @@
     {
         if (data instanceof TurbineRunData)
         {
-            pool.putInstance(((TurbineRunData) data).getParameterParser());
-            pool.putInstance(((TurbineRunData) data).getCookieParser());
+            parserService.putParser(((TurbineRunData) data).getParameterParser());
+            parserService.putParser(((TurbineRunData) data).getCookieParser());
 
             return pool.putInstance(data);
         }

Modified: turbine/core/trunk/src/test/org/apache/turbine/modules/ActionLoaderTest.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/test/org/apache/turbine/modules/ActionLoaderTest.java?rev=645898&r1=645897&r2=645898&view=diff
==============================================================================
--- turbine/core/trunk/src/test/org/apache/turbine/modules/ActionLoaderTest.java (original)
+++ turbine/core/trunk/src/test/org/apache/turbine/modules/ActionLoaderTest.java Tue Apr  8 06:13:46 2008
@@ -24,7 +24,6 @@
 import java.util.Map;
 import java.util.Vector;
 
-import javax.servlet.ServletConfig;
 import javax.servlet.http.HttpServletResponse;
 
 import junit.framework.Assert;
@@ -34,7 +33,6 @@
 import org.apache.turbine.om.security.User;
 import org.apache.turbine.pipeline.DefaultPipelineData;
 import org.apache.turbine.pipeline.PipelineData;
-import org.apache.turbine.services.template.TemplateService;
 import org.apache.turbine.test.BaseTestCase;
 import org.apache.turbine.test.EnhancedMockHttpServletRequest;
 import org.apache.turbine.test.EnhancedMockHttpSession;
@@ -54,13 +52,12 @@
  */
 public class ActionLoaderTest extends BaseTestCase {
 	private static TurbineConfig tc = null;
-	private static TemplateService ts = null;
 	private MockServletConfig config = null;
 	private EnhancedMockHttpServletRequest request = null;
 	private EnhancedMockHttpSession session = null;
 	private HttpServletResponse response = null;
-	private static ServletConfig sc = null;
-	/*
+
+    /*
 	 * @see TestCase#setUp()
 	 */
 	protected void setUp() throws Exception {
@@ -83,7 +80,6 @@
 		response = new MockHttpServletResponse();
 		session.setupGetAttribute(User.SESSION_KEY, null);
 		request.setSession(session);
-		sc = config;
 		tc =
 			new TurbineConfig(
 				".",

Modified: turbine/core/trunk/src/test/org/apache/turbine/util/parser/BaseValueParserTest.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/test/org/apache/turbine/util/parser/BaseValueParserTest.java?rev=645898&r1=645897&r2=645898&view=diff
==============================================================================
--- turbine/core/trunk/src/test/org/apache/turbine/util/parser/BaseValueParserTest.java (original)
+++ turbine/core/trunk/src/test/org/apache/turbine/util/parser/BaseValueParserTest.java Tue Apr  8 06:13:46 2008
@@ -23,13 +23,13 @@
 
 import java.math.BigDecimal;
 
-import org.apache.commons.configuration.BaseConfiguration;
-import org.apache.commons.configuration.Configuration;
-import org.apache.turbine.services.ServiceManager;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.fulcrum.parser.BaseValueParser;
+import org.apache.fulcrum.parser.ParserService;
 import org.apache.turbine.services.TurbineServices;
+import org.apache.turbine.services.avaloncomponent.AvalonComponentService;
 import org.apache.turbine.test.BaseTestCase;
-import org.apache.fulcrum.parser.BaseValueParser;
-import org.apache.turbine.util.parser.ParserUtils;
+import org.apache.turbine.util.TurbineConfig;
 
 /**
  * Testing of the Fulcrum BaseValueParser class
@@ -41,6 +41,10 @@
 {
     private org.apache.fulcrum.parser.BaseValueParser parser;
 
+    private ParserService parserService;
+
+    private static TurbineConfig tc = null;
+
     /**
      * Constructor for test.
      *
@@ -52,13 +56,11 @@
         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);
-
+        tc =
+            new TurbineConfig(
+                ".",
+                "/conf/test/CompleteTurbineResources.properties");
+        tc.initialize();
     }
 
     /**
@@ -66,7 +68,22 @@
      */
     protected void setUp()
     {
-        parser = new BaseValueParser();
+        AvalonComponentService acs = 
+            (AvalonComponentService)TurbineServices.getInstance().getService(AvalonComponentService.SERVICE_NAME);
+        
+        try
+        {
+            parserService = (ParserService)acs.lookup(ParserService.ROLE);
+            parser = (BaseValueParser) parserService.getParser(BaseValueParser.class);
+        }
+        catch (ServiceException e)
+        {
+            fail(e.getMessage());
+        }
+        catch (InstantiationException e)
+        {
+            fail(e.getMessage());
+        }
     }
 
     /**
@@ -74,6 +91,11 @@
      */
     protected void tearDown()
     {
+        if (tc != null) 
+        {
+            tc.dispose();
+        }
+        
         parser = null;
     }
 

Modified: turbine/core/trunk/src/test/org/apache/turbine/util/uri/TurbineURITest.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/test/org/apache/turbine/util/uri/TurbineURITest.java?rev=645898&r1=645897&r2=645898&view=diff
==============================================================================
--- turbine/core/trunk/src/test/org/apache/turbine/util/uri/TurbineURITest.java (original)
+++ turbine/core/trunk/src/test/org/apache/turbine/util/uri/TurbineURITest.java Tue Apr  8 06:13:46 2008
@@ -19,21 +19,19 @@
  * under the License.
  */
 
-import org.apache.commons.configuration.BaseConfiguration;
-import org.apache.commons.configuration.Configuration;
-//import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-//import org.apache.commons.fileupload.FileItem;
+import org.apache.avalon.framework.service.ServiceException;
 import org.apache.fulcrum.parser.DefaultParameterParser;
 import org.apache.fulcrum.parser.ParameterParser;
-import org.apache.turbine.services.ServiceManager;
+import org.apache.fulcrum.parser.ParserService;
 import org.apache.turbine.services.TurbineServices;
+import org.apache.turbine.services.avaloncomponent.AvalonComponentService;
 import org.apache.turbine.test.BaseTestCase;
 import org.apache.turbine.util.ServerData;
-import org.apache.turbine.util.parser.ParserUtils;
+import org.apache.turbine.util.TurbineConfig;
 
 /**
  * Testing of the TurbineURI class
- *
+ * 
  * @author <a href="mailto:quintonm@bellsouth.net">Quinton McCombs</a>
  * @author <a href="mailto:seade@backstagetech.com.au">Scott Eade</a>
  * @version $Id$
@@ -42,24 +40,26 @@
 {
     private TurbineURI turi;
 
+    private ParserService parserService;
+
+    private static TurbineConfig tc = null;
+
     /**
      * Constructor for test.
-     *
-     * @param testName name of the test being executed
+     * 
+     * @param testName
+     *            name of the test being executed
      */
-    public TurbineURITest(String testName)
-            throws Exception
+    public TurbineURITest(String testName) throws Exception
     {
         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);
-
+        tc =
+            new TurbineConfig(
+                ".",
+                "/conf/test/CompleteTurbineResources.properties");
+        tc.initialize();
     }
 
     /**
@@ -68,9 +68,22 @@
     protected void setUp()
     {
         ServerData sd = new ServerData("www.testserver.com",
-                URIConstants.HTTP_PORT, URIConstants.HTTP,
-                "/servlet/turbine", "/context");
+                URIConstants.HTTP_PORT, URIConstants.HTTP, "/servlet/turbine",
+                "/context");
         turi = new TurbineURI(sd);
+
+        AvalonComponentService acs = 
+            (AvalonComponentService)TurbineServices.getInstance().getService(AvalonComponentService.SERVICE_NAME);
+
+        try
+        {
+            parserService = (ParserService)acs.lookup(ParserService.ROLE);
+        }
+        catch (ServiceException e)
+        {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
     }
 
     /**
@@ -78,29 +91,45 @@
      */
     protected void tearDown()
     {
+        if (tc != null) 
+        {
+            tc.dispose();
+        }
+        
         turi = null;
     }
 
-
     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());
+        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());
+        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());
+        assertEquals("TurbineURI must not have a queryData", false, turi
+                .hasQueryData());
+        assertEquals("TurbineURI must not have a pathInfo", false, turi
+                .hasPathInfo());
     }
 
     public void testEmptyAndNullQueryData()
@@ -114,7 +143,8 @@
         // Check null
         assertEquals("/context/servlet/turbine", turi.getRelativeLink());
         turi.addQueryData("test", null);
-        assertEquals("/context/servlet/turbine?test=null", turi.getRelativeLink());
+        assertEquals("/context/servlet/turbine?test=null", turi
+                .getRelativeLink());
         turi.removeQueryData("test");
         assertEquals("/context/servlet/turbine", turi.getRelativeLink());
     }
@@ -131,7 +161,8 @@
         // Check null
         assertEquals("/context/servlet/turbine", turi.getRelativeLink());
         turi.addPathInfo("test", null);
-        assertEquals("/context/servlet/turbine/test/null", turi.getRelativeLink());
+        assertEquals("/context/servlet/turbine/test/null", turi
+                .getRelativeLink());
         turi.removePathInfo("test");
         assertEquals("/context/servlet/turbine", turi.getRelativeLink());
     }
@@ -141,38 +172,46 @@
         ParameterParser pp = new DefaultParameterParser();
         turi.add(1, pp); // 1 = query data
         assertEquals("/context/servlet/turbine", turi.getRelativeLink());
-}
-    public void testAddParameterParser()
+    }
+
+    public void testAddParameterParser() throws InstantiationException
     {
-        ParameterParser pp = new DefaultParameterParser();
+        ParameterParser pp = (ParameterParser) parserService.getParser(DefaultParameterParser.class);
         pp.add("test", "");
         turi.add(1, pp); // 1 = query data
         assertEquals("/context/servlet/turbine?test=", turi.getRelativeLink());
         turi.removeQueryData("test");
         assertEquals("/context/servlet/turbine", turi.getRelativeLink());
-
-        pp = new DefaultParameterParser();
+        
+        parserService.putParser(pp);
+        pp = (ParameterParser) parserService.getParser(DefaultParameterParser.class);
         pp.add("test", (String) null);
         turi.add(1, pp); // 1 = query data
-        // Should make the following work so as to be consistent with directly added values.
-        //assertEquals("/context/servlet/turbine?test=null", turi.getRelativeLink());
+        // Should make the following work so as to be consistent with directly
+        // added values.
+        // assertEquals("/context/servlet/turbine?test=null",
+        // turi.getRelativeLink());
         turi.removeQueryData("test");
         assertEquals("/context/servlet/turbine", turi.getRelativeLink());
 
         // TRB-8
         //
         // This is commented out for now as it results in a ClassCastException.
-        // The 2_3 branch parser changes need to be merged into the fulcrum code.
+        // The 2_3 branch parser changes need to be merged into the fulcrum
+        // code.
         //
-        //pp = new DefaultParameterParser();
-        //DiskFileItemFactory factory = new DiskFileItemFactory(10240, null);
-        //FileItem test = factory.createItem("upload-field", "application/octet-stream", false, null);
-        //pp.append("upload-field", test);
-        //// The following causes a ClassCastException with or without the TRB-8 fix.
-        //turi.add(1, pp); // 1 = query data
-        //assertEquals("/context/servlet/turbine?upload-field=", turi.getRelativeLink());
-        //turi.removeQueryData("upload-field");
-        //assertEquals("/context/servlet/turbine", turi.getRelativeLink());
+        // pp = new DefaultParameterParser();
+        // DiskFileItemFactory factory = new DiskFileItemFactory(10240, null);
+        // FileItem test = factory.createItem("upload-field",
+        // "application/octet-stream", false, null);
+        // pp.append("upload-field", test);
+        // // The following causes a ClassCastException with or without the
+        // TRB-8 fix.
+        // turi.add(1, pp); // 1 = query data
+        // assertEquals("/context/servlet/turbine?upload-field=",
+        // turi.getRelativeLink());
+        // turi.removeQueryData("upload-field");
+        // assertEquals("/context/servlet/turbine", turi.getRelativeLink());
     }
 
 }

Modified: turbine/core/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/turbine/core/trunk/xdocs/changes.xml?rev=645898&r1=645897&r2=645898&view=diff
==============================================================================
--- turbine/core/trunk/xdocs/changes.xml (original)
+++ turbine/core/trunk/xdocs/changes.xml Tue Apr  8 06:13:46 2008
@@ -25,6 +25,10 @@
 
   <body>
     <release version="2.4-M2" date="in Subversion">
+      <action type="update" dev="tv" issue="TRB-39">
+        Make sure that Turbine uses the ParserService to get 
+        correctly initialized parser objects.
+      </action>
       <action type="fix" dev="seade">
         Added missing format() methods to LocalizationTool.
       </action>