You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/04/27 22:58:25 UTC
svn commit: r1676377 - in
/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet:
HtmlRenderer.java JUnitServlet.java ServletProcessor.java
SlingJUnitServlet.java
Author: cziegeler
Date: Mon Apr 27 20:58:25 2015
New Revision: 1676377
URL: http://svn.apache.org/r1676377
Log:
Don't use scr annotation inheritence
Added:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java (with props)
Modified:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JUnitServlet.java
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/SlingJUnitServlet.java
Modified: sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java?rev=1676377&r1=1676376&r2=1676377&view=diff
==============================================================================
--- sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java (original)
+++ sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java Mon Apr 27 20:58:25 2015
@@ -25,8 +25,8 @@ import javax.servlet.http.HttpServletRes
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
-import org.apache.sling.junit.RendererFactory;
import org.apache.sling.junit.Renderer;
+import org.apache.sling.junit.RendererFactory;
import org.apache.sling.junit.TestSelector;
import org.junit.runner.Description;
import org.junit.runner.Result;
@@ -40,9 +40,9 @@ public class HtmlRenderer extends RunLis
public static final String EXTENSION = "html";
private PrintWriter output;
-
+
/** @inheritDoc */
- public Renderer createRenderer() {
+ public Renderer createRenderer() {
return new HtmlRenderer();
}
@@ -50,9 +50,9 @@ public class HtmlRenderer extends RunLis
public boolean appliesTo(TestSelector s) {
// This is our default renderer, applies to the empty
// extension as well
- return EXTENSION.equals(s.getExtension()) || "".equals(s.getExtension());
+ return EXTENSION.equals(s.getExtension()) || "".equals(s.getExtension());
}
-
+
/** @inheritDoc */
public String getExtension() {
return EXTENSION;
@@ -64,7 +64,7 @@ public class HtmlRenderer extends RunLis
HtmlFilter.escape(output, str);
output.println("</p>");
}
-
+
/** @inheritDoc */
public void list(String cssClass, Collection<String> data) {
output.println("<ul class='testNames'>");
@@ -75,18 +75,18 @@ public class HtmlRenderer extends RunLis
}
output.println("</ul>");
}
-
+
/** @inheritDoc */
public void title(int level, String title) {
output.print("<h" + level + ">");
HtmlFilter.escape(output, title);
output.print("</h" + level + ">");
}
-
+
/** @inheritDoc */
public void link(String info, String url, String method) {
output.println("<div class='link'>");
-
+
if("POST".equalsIgnoreCase(method)) {
output.print("<form method='POST' action='");
output.print(url);
@@ -102,7 +102,7 @@ public class HtmlRenderer extends RunLis
HtmlFilter.escape(output, info);
output.println("</a>");
}
-
+
output.println("</div>");
}
@@ -115,7 +115,7 @@ public class HtmlRenderer extends RunLis
response.setCharacterEncoding("UTF-8");
output = response.getWriter();
output.println("<html><head>");
- output.println("<link rel='stylesheet' type='text/css' href='" + JUnitServlet.CSS + "'/>");
+ output.println("<link rel='stylesheet' type='text/css' href='" + ServletProcessor.CSS + "'/>");
output.print("<title>");
HtmlFilter.escape(output, pageTitle);
output.println("</title>");
@@ -123,19 +123,19 @@ public class HtmlRenderer extends RunLis
HtmlFilter.escape(output, pageTitle);
output.println("</h1>");
}
-
+
/** @inheritDoc */
public void cleanup() {
output.println("</body>");
output.println("</html>");
output = null;
}
-
+
/** @inheritDoc */
public RunListener getRunListener() {
return this;
}
-
+
@Override
public void testFailure(Failure failure) throws Exception {
super.testFailure(failure);
@@ -173,7 +173,7 @@ public class HtmlRenderer extends RunLis
HtmlFilter.escape(output, String.valueOf(value));
output.println("</span>");
}
-
+
@Override
public void testRunFinished(Result result) throws Exception {
super.testRunFinished(result);
@@ -185,7 +185,7 @@ public class HtmlRenderer extends RunLis
} else {
cssClass += "success";
}
-
+
output.println("<p class='testRun'>");
output.print("TEST RUN FINISHED: ");
counter("tests", "testCount", result.getRunCount());
Modified: sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JUnitServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JUnitServlet.java?rev=1676377&r1=1676376&r2=1676377&view=diff
==============================================================================
--- sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JUnitServlet.java (original)
+++ sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JUnitServlet.java Mon Apr 27 20:58:25 2015
@@ -17,12 +17,7 @@
package org.apache.sling.junit.impl.servlet;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Collections;
import java.util.Dictionary;
-import java.util.LinkedList;
-import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -32,10 +27,7 @@ import javax.servlet.http.HttpServletRes
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
-import org.apache.sling.junit.Renderer;
import org.apache.sling.junit.RendererSelector;
-import org.apache.sling.junit.RequestParser;
-import org.apache.sling.junit.TestSelector;
import org.apache.sling.junit.TestsManager;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.http.HttpService;
@@ -47,33 +39,33 @@ import org.slf4j.LoggerFactory;
@SuppressWarnings("serial")
@Component(immediate=true, metatype=true)
public class JUnitServlet extends HttpServlet {
-
+
private final Logger log = LoggerFactory.getLogger(getClass());
-
- public static final String CSS = "junit.css";
- public static final String FORCE_RELOAD_PARAM = "forceReload";
-
+
@Property(value="/system/sling/junit")
static final String SERVLET_PATH_NAME = "servlet.path";
-
- /** Non-null if we are registered with HttpService */
+
+ /** Non-null if we are registered with HttpService */
private String servletPath;
-
+
@Reference
private TestsManager testsManager;
-
+
@Reference
private HttpService httpService;
-
+
@Reference
private RendererSelector rendererSelector;
-
- protected void activate(ComponentContext ctx) throws ServletException, NamespaceException {
+
+ private volatile ServletProcessor processor;
+
+ protected void activate(final ComponentContext ctx) throws ServletException, NamespaceException {
servletPath = getServletPath(ctx);
if(servletPath == null) {
log.info("Servlet path is null, not registering with HttpService");
} else {
httpService.registerServlet(servletPath, this, null, null);
+ this.processor = new ServletProcessor(testsManager, rendererSelector);
log.info("Servlet registered at {}", servletPath);
}
}
@@ -81,7 +73,7 @@ public class JUnitServlet extends HttpSe
/** Return the path at which to mount this servlet, or null
* if it must not be mounted.
*/
- protected String getServletPath(ComponentContext ctx) {
+ private String getServletPath(ComponentContext ctx) {
final Dictionary<?, ?> config = ctx.getProperties();
String result = (String)config.get(SERVLET_PATH_NAME);
if(result != null && result.trim().length() == 0) {
@@ -89,149 +81,27 @@ public class JUnitServlet extends HttpSe
}
return result;
}
-
+
protected void deactivate(ComponentContext ctx) throws ServletException, NamespaceException {
if(servletPath != null) {
httpService.unregister(servletPath);
log.info("Servlet unregistered from path {}", servletPath);
}
servletPath = null;
+ this.processor = null;
}
-
- /** Return sorted list of available tests
- * @param prefix optionally select only names that match this prefix
- */
- private List<String> getTestNames(TestSelector selector, boolean forceReload) {
- final List<String> result = new LinkedList<String>();
- if(forceReload) {
- log.debug("{} is true, clearing TestsManager caches", FORCE_RELOAD_PARAM);
- }
- result.addAll(testsManager.getTestNames(selector));
- Collections.sort(result);
- return result;
- }
-
- private void sendCss(HttpServletResponse response) throws IOException {
- final InputStream str = getClass().getResourceAsStream("/" + CSS);
- if(str == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, CSS);
- } else {
- response.setContentType("text/css");
- final OutputStream out = response.getOutputStream();
- final byte[] buffer = new byte[16384];
- int count = 0;
- while( (count = str.read(buffer)) > 0) {
- out.write(buffer, 0, count);
- }
- out.flush();
- }
- }
-
- private boolean getForceReloadOption(HttpServletRequest request) {
- final boolean forceReload = "true".equalsIgnoreCase(request.getParameter(FORCE_RELOAD_PARAM));
- log.debug("{} option is set to {}", FORCE_RELOAD_PARAM, forceReload);
- return forceReload;
- }
-
- /** GET request lists available tests */
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- final boolean forceReload = getForceReloadOption(request);
-
- // Redirect to / if called without it, and serve CSS if requested
- {
- final String pi = request.getPathInfo();
- if(pi == null) {
- response.sendRedirect(request.getContextPath() + servletPath + "/");
- } else if(pi.endsWith(CSS)) {
- sendCss(response);
- return;
- }
- }
-
- final TestSelector selector = getTestSelector(request);
- final Renderer renderer = rendererSelector.getRenderer(selector);
- if(renderer == null) {
- throw new ServletException("No Renderer found for " + selector);
- }
- log.debug("GET request: {}", selector);
- renderer.setup(response, getClass().getSimpleName());
- renderer.info("info", "Test selector: " + selector);
-
- // Any test classes?
- final List<String> testNames = getTestNames(selector, forceReload);
- if(testNames.isEmpty()) {
- renderer.info(
- "warning",
- "No test classes found for selector " + selector
- + ", check the requirements of the active " +
- "TestsProvider services for how to supply tests."
- );
- } else {
- try {
- testsManager.listTests(testNames, renderer);
- final String postPath = getTestExecutionPath(request, selector, renderer.getExtension());
- renderer.link("Execute these tests", postPath, "POST");
- } catch(Exception e) {
- throw new ServletException(e);
- }
- }
- renderer.cleanup();
- }
-
- /** POST request executes tests */
@Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- final TestSelector selector = getTestSelector(request);
- final boolean forceReload = getForceReloadOption(request);
- log.info("POST request, executing tests: {}, {}={}",
- new Object[] { selector, FORCE_RELOAD_PARAM, forceReload});
-
- final Renderer renderer = rendererSelector.getRenderer(selector);
- if(renderer == null) {
- throw new ServletException("No Renderer found for " + selector);
- }
- renderer.setup(response, getClass().getSimpleName());
-
- final List<String> testNames = getTestNames(selector, forceReload);
- if(testNames.isEmpty()) {
- response.sendError(
- HttpServletResponse.SC_NOT_FOUND,
- "No tests found for " + selector);
- }
- try {
- testsManager.executeTests(testNames, renderer, selector);
- } catch(Exception e) {
- throw new ServletException(e);
- }
-
- renderer.cleanup();
- }
-
- /** Return a TestSelector for supplied request */
- protected TestSelector getTestSelector(HttpServletRequest request) {
- return new RequestParser(getTestSelectionPath(request));
- }
-
- /** Return subpath to use for selecting tests */
- protected String getTestSelectionPath(HttpServletRequest request) {
- return request.getPathInfo();
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ this.processor.doGet(req, resp, this.servletPath);
}
-
- /** Return path to which to POST to execute specified test */
- protected String getTestExecutionPath(HttpServletRequest request, TestSelector selector, String extension) {
- String selectedTestMethodName = selector.getSelectedTestMethodName();
- String methodStr = "";
- if (selectedTestMethodName != null && !"".equals(selectedTestMethodName)) {
- methodStr = "/" + selectedTestMethodName;
- }
- return "./"
- + selector.getTestSelectorString()
- + methodStr
- + "."
- + extension;
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ this.processor.doPost(req, resp);
}
+
+
}
\ No newline at end of file
Added: sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java?rev=1676377&view=auto
==============================================================================
--- sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java (added)
+++ sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java Mon Apr 27 20:58:25 2015
@@ -0,0 +1,189 @@
+/*
+ * 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.sling.junit.impl.servlet;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.sling.junit.Renderer;
+import org.apache.sling.junit.RendererSelector;
+import org.apache.sling.junit.RequestParser;
+import org.apache.sling.junit.TestSelector;
+import org.apache.sling.junit.TestsManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ServletProcessor {
+
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ public static final String CSS = "junit.css";
+ public static final String FORCE_RELOAD_PARAM = "forceReload";
+
+ private final TestsManager testsManager;
+
+ private final RendererSelector rendererSelector;
+
+ public ServletProcessor(final TestsManager testsManager,
+ final RendererSelector rendererSelector) {
+ this.testsManager = testsManager;
+ this.rendererSelector = rendererSelector;
+ }
+
+ /** Return sorted list of available tests
+ * @param prefix optionally select only names that match this prefix
+ */
+ private List<String> getTestNames(TestSelector selector, boolean forceReload) {
+ final List<String> result = new LinkedList<String>();
+ if(forceReload) {
+ log.debug("{} is true, clearing TestsManager caches", FORCE_RELOAD_PARAM);
+ }
+ result.addAll(testsManager.getTestNames(selector));
+ Collections.sort(result);
+ return result;
+ }
+
+ private void sendCss(HttpServletResponse response) throws IOException {
+ final InputStream str = getClass().getResourceAsStream("/" + CSS);
+ if(str == null) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, CSS);
+ } else {
+ response.setContentType("text/css");
+ final OutputStream out = response.getOutputStream();
+ final byte[] buffer = new byte[16384];
+ int count = 0;
+ while( (count = str.read(buffer)) > 0) {
+ out.write(buffer, 0, count);
+ }
+ out.flush();
+ }
+ }
+
+ private boolean getForceReloadOption(HttpServletRequest request) {
+ final boolean forceReload = "true".equalsIgnoreCase(request.getParameter(FORCE_RELOAD_PARAM));
+ log.debug("{} option is set to {}", FORCE_RELOAD_PARAM, forceReload);
+ return forceReload;
+ }
+
+ /** GET request lists available tests */
+ public void doGet(final HttpServletRequest request, final HttpServletResponse response, final String servletPath)
+ throws ServletException, IOException {
+ final boolean forceReload = getForceReloadOption(request);
+
+ // Redirect to / if called without it, and serve CSS if requested
+ {
+ final String pi = request.getPathInfo();
+ if(pi == null) {
+ response.sendRedirect(request.getContextPath() + servletPath + "/");
+ } else if(pi.endsWith(CSS)) {
+ sendCss(response);
+ return;
+ }
+ }
+
+ final TestSelector selector = getTestSelector(request);
+ final Renderer renderer = rendererSelector.getRenderer(selector);
+ if(renderer == null) {
+ throw new ServletException("No Renderer found for " + selector);
+ }
+ log.debug("GET request: {}", selector);
+
+ renderer.setup(response, getClass().getSimpleName());
+ renderer.info("info", "Test selector: " + selector);
+
+ // Any test classes?
+ final List<String> testNames = getTestNames(selector, forceReload);
+ if(testNames.isEmpty()) {
+ renderer.info(
+ "warning",
+ "No test classes found for selector " + selector
+ + ", check the requirements of the active " +
+ "TestsProvider services for how to supply tests."
+ );
+ } else {
+ try {
+ testsManager.listTests(testNames, renderer);
+ final String postPath = getTestExecutionPath(request, selector, renderer.getExtension());
+ renderer.link("Execute these tests", postPath, "POST");
+ } catch(Exception e) {
+ throw new ServletException(e);
+ }
+ }
+ renderer.cleanup();
+ }
+
+ /** POST request executes tests */
+ public void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ final TestSelector selector = getTestSelector(request);
+ final boolean forceReload = getForceReloadOption(request);
+ log.info("POST request, executing tests: {}, {}={}",
+ new Object[] { selector, FORCE_RELOAD_PARAM, forceReload});
+
+ final Renderer renderer = rendererSelector.getRenderer(selector);
+ if(renderer == null) {
+ throw new ServletException("No Renderer found for " + selector);
+ }
+ renderer.setup(response, getClass().getSimpleName());
+
+ final List<String> testNames = getTestNames(selector, forceReload);
+ if(testNames.isEmpty()) {
+ response.sendError(
+ HttpServletResponse.SC_NOT_FOUND,
+ "No tests found for " + selector);
+ }
+ try {
+ testsManager.executeTests(testNames, renderer, selector);
+ } catch(Exception e) {
+ throw new ServletException(e);
+ }
+
+ renderer.cleanup();
+ }
+
+ /** Return a TestSelector for supplied request */
+ private TestSelector getTestSelector(HttpServletRequest request) {
+ return new RequestParser(getTestSelectionPath(request));
+ }
+
+ /** Return subpath to use for selecting tests */
+ protected String getTestSelectionPath(HttpServletRequest request) {
+ return request.getPathInfo();
+ }
+
+ /** Return path to which to POST to execute specified test */
+ protected String getTestExecutionPath(HttpServletRequest request, TestSelector selector, String extension) {
+ String selectedTestMethodName = selector.getSelectedTestMethodName();
+ String methodStr = "";
+ if (selectedTestMethodName != null && !"".equals(selectedTestMethodName)) {
+ methodStr = "/" + selectedTestMethodName;
+ }
+ return "./"
+ + selector.getTestSelectorString()
+ + methodStr
+ + "."
+ + extension;
+ }
+}
\ No newline at end of file
Propchange: sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/ServletProcessor.java
------------------------------------------------------------------------------
svn:keywords = author date id revision rev url
Modified: sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/SlingJUnitServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/SlingJUnitServlet.java?rev=1676377&r1=1676376&r2=1676377&view=diff
==============================================================================
--- sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/SlingJUnitServlet.java (original)
+++ sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/SlingJUnitServlet.java Mon Apr 27 20:58:25 2015
@@ -16,14 +16,23 @@
*/
package org.apache.sling.junit.impl.servlet;
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.junit.RendererSelector;
import org.apache.sling.junit.TestSelector;
+import org.apache.sling.junit.TestsManager;
import org.osgi.service.component.ComponentContext;
+import org.osgi.service.http.NamespaceException;
/** Alternate entry point for testing, that uses
* the Sling request/response cycle.
@@ -31,56 +40,77 @@ import org.osgi.service.component.Compon
* Can be used to run tests in an environment that
* more closely matches how Sling components run,
* but requires Sling - so we keep both servlets
- * in order for this module to be reusable without
+ * in order for this module to be reusable without
* Sling.
- *
+ *
* This servlet is registered with a specific resource
* type, to call it a Sling resource must be created
* with this resource type.
*/
@SuppressWarnings("serial")
-@Component
+@Component(metatype=true)
@Service(value=javax.servlet.Servlet.class)
@Properties({
@Property(name="sling.servlet.resourceTypes", value="sling/junit/testing"),
@Property(name="sling.servlet.extensions", value="junit"),
@Property(name="sling.servlet.methods", value={"GET","POST"})
})
-public class SlingJUnitServlet extends JUnitServlet {
-
+public class SlingJUnitServlet extends HttpServlet {
+
public static final String EXTENSION = ".junit";
-
- /** Do not register this servlet with HttpService ourselves,
- * Sling will take care of that.
- */
+
+ @Reference
+ private TestsManager testsManager;
+
+ @Reference
+ private RendererSelector rendererSelector;
+
+ private volatile ServletProcessor processor;
+
+ protected void activate(final ComponentContext ctx) throws ServletException, NamespaceException {
+ this.processor = new ServletProcessor(testsManager, rendererSelector) {
+ @Override
+ protected String getTestSelectionPath(HttpServletRequest request) {
+ // PathInfo contains the path to our resource, followed
+ // by the .junit extension - cut up to that
+ String result = request.getPathInfo();
+ final int pos = result.indexOf(EXTENSION);
+ if(pos >= 0) {
+ result = result.substring(pos + EXTENSION.length());
+ }
+ return result;
+ }
+
+ /** Return path to which to POST to execute specified test */
+ @Override
+ protected String getTestExecutionPath(HttpServletRequest request, TestSelector selector, String extension) {
+ String selectedTestMethodName = selector.getSelectedTestMethodName();
+ String methodStr = "";
+ if (selectedTestMethodName != null && !"".equals(selectedTestMethodName)) {
+ methodStr = "/" + selectedTestMethodName;
+ }
+ return "./"
+ + selector.getTestSelectorString()
+ + methodStr
+ + "."
+ + extension;
+ }
+ };
+ }
+
+ protected void deactivate(ComponentContext ctx) throws ServletException, NamespaceException {
+ this.processor = null;
+ }
+
@Override
- protected String getServletPath(ComponentContext ctx) {
- return null;
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ this.processor.doGet(req, resp, null);
}
-
+
@Override
- protected String getTestSelectionPath(HttpServletRequest request) {
- // PathInfo contains the path to our resource, followed
- // by the .junit extension - cut up to that
- String result = request.getPathInfo();
- final int pos = result.indexOf(EXTENSION);
- if(pos >= 0) {
- result = result.substring(pos + EXTENSION.length());
- }
- return result;
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ this.processor.doPost(req, resp);
}
-
- /** Return path to which to POST to execute specified test */
- protected String getTestExecutionPath(HttpServletRequest request, TestSelector selector, String extension) {
- String selectedTestMethodName = selector.getSelectedTestMethodName();
- String methodStr = "";
- if (selectedTestMethodName != null && !"".equals(selectedTestMethodName)) {
- methodStr = "/" + selectedTestMethodName;
- }
- return "./"
- + selector.getTestSelectorString()
- + methodStr
- + "."
- + extension;
}
-}