Author: bdelacretaz
Date: Wed Feb 23 12:25:56 2011
New Revision: 1073720
URL: http://svn.apache.org/viewvc?rev=1073720&view=rev
Log:
SLING-1992 - move test execution logic to TestsManager service
Added:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/RendererSelector.java
(with props)
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/TestsManager.java
- copied, changed from r1073710,
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/JUnitTestsManager.java
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/RendererSelectorImpl.java
(with props)
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/TestsManagerImpl.java
- copied, changed from r1073710,
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/JUnitTestsManagerImpl.java
Removed:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/JUnitTestsManager.java
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/JUnitTestsManagerImpl.java
Modified:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/Renderer.java
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/JsonRenderer.java
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/PlainTextRenderer.java
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/XmlRenderer.java
Modified:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/Renderer.java
URL:
http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/Renderer.java?rev=1073720&r1=1073719&r2=1073720&view=diff
==============================================================================
---
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/Renderer.java
(original)
+++
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/Renderer.java
Wed Feb 23 12:25:56 2011
@@ -18,7 +18,7 @@ package org.apache.sling.junit;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
-import java.util.List;
+import java.util.Collection;
import javax.servlet.http.HttpServletResponse;
@@ -38,7 +38,7 @@ import org.junit.runner.notification.Run
/** Render a list of things
* @param describes the role of the list, must be a valid CSS class value
*/
- void list(String role, List<String> data);
+ void list(String role, Collection<String> data);
/** Render general information
* @param describes the role of the list, must be a valid CSS class value
Added:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/RendererSelector.java
URL:
http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/RendererSelector.java?rev=1073720&view=auto
==============================================================================
---
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/RendererSelector.java
(added)
+++
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/RendererSelector.java
Wed Feb 23 12:25:56 2011
@@ -0,0 +1,33 @@
+/*
+ * 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;
+
+import java.util.Collection;
+
+import javax.servlet.http.HttpServletRequest;
+
+/** Provides a Renderer to execute tests */
+public interface RendererSelector {
+ /** Return all available Renderers */
+ Collection<Renderer> getRenderers();
+
+ /** Select a Renderer for supplied request */
+ Renderer getRenderer(HttpServletRequest r);
+
+ /** Select a Renderer for supplied RequestParser */
+ Renderer getRenderer(RequestParser rp);
+}
Propchange:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/RendererSelector.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/RendererSelector.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Copied:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/TestsManager.java
(from r1073710,
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/JUnitTestsManager.java)
URL:
http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/TestsManager.java?p2=sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/TestsManager.java&p1=sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/JUnitTestsManager.java&r1=1073710&r2=1073720&rev=1073720&view=diff
==============================================================================
---
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/JUnitTestsManager.java
(original)
+++
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/TestsManager.java
Wed Feb 23 12:25:56 2011
@@ -19,10 +19,20 @@ package org.apache.sling.junit;
import java.util.Collection;
/** Service that gives access to JUnit test classes */
-public interface JUnitTestsManager {
+public interface TestsManager {
/** Return the names of all currently available tests */
public Collection<String> getTestNames();
/** Instantiate test class for specified test */
public Class<?> getTestClass(String testName) throws
ClassNotFoundException;
+
+ /** List tests using supplied Renderer - does NOT call setup or cleanup
+ * on renderer.
+ */
+ public void listTests(Collection<String> testNames, Renderer renderer)
throws Exception;
+
+ /** Execute tests and report results using supplied Renderer - does NOT
call setup or cleanup
+ * on renderer.
+ */
+ public void executeTests(Collection<String> testNames, Renderer renderer)
throws Exception;
}
Added:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/RendererSelectorImpl.java
URL:
http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/RendererSelectorImpl.java?rev=1073720&view=auto
==============================================================================
---
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/RendererSelectorImpl.java
(added)
+++
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/RendererSelectorImpl.java
Wed Feb 23 12:25:56 2011
@@ -0,0 +1,96 @@
+/*
+ * 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;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.junit.Renderer;
+import org.apache.sling.junit.RendererSelector;
+import org.apache.sling.junit.RequestParser;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.http.NamespaceException;
+import org.osgi.util.tracker.ServiceTracker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** Default RendererSelector */
+@Component(immediate=false)
+@Service
+public class RendererSelectorImpl implements RendererSelector {
+ private final Logger log = LoggerFactory.getLogger(getClass());
+ private final List<Renderer> renderers = new ArrayList<Renderer>();
+ private ServiceTracker renderersTracker;
+ private int renderersTrackerTrackingCount = -1;
+ private BundleContext bundleContext;
+
+ public Collection<Renderer> getRenderers() {
+ return Collections.unmodifiableCollection(renderers);
+ }
+
+ public Renderer getRenderer(HttpServletRequest request) {
+ return getRenderer(new RequestParser(request));
+ }
+
+ public Renderer getRenderer(RequestParser rp) {
+ if(renderersTracker.getTrackingCount() !=
renderersTrackerTrackingCount) {
+ log.debug("Rebuilding list of {}", Renderer.class.getSimpleName());
+ renderersTrackerTrackingCount =
renderersTracker.getTrackingCount();
+ final ServiceReference [] refs =
renderersTracker.getServiceReferences();
+ renderers.clear();
+ if(refs != null) {
+ for(ServiceReference ref : refs) {
+ renderers.add( (Renderer)bundleContext.getService(ref) );
+ }
+ }
+ log.info("List of {} rebuilt: {}",
+ Renderer.class.getSimpleName(),
+ renderers);
+ }
+
+ for(Renderer r : renderers) {
+ if(r.appliesTo(rp)) {
+ return r;
+ }
+ }
+
+ return null;
+ }
+
+ protected void activate(ComponentContext ctx) throws ServletException,
NamespaceException {
+ bundleContext = ctx.getBundleContext();
+ renderersTracker = new ServiceTracker(ctx.getBundleContext(),
Renderer.class.getName(), null);
+ renderersTracker.open();
+ }
+
+ protected void deactivate(ComponentContext ctx) throws ServletException,
NamespaceException {
+ if(renderersTracker != null) {
+ renderersTracker.close();
+ renderersTracker = null;
+ }
+ bundleContext = null;
+ }
+}
Propchange:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/RendererSelectorImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/RendererSelectorImpl.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Copied:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/TestsManagerImpl.java
(from r1073710,
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/JUnitTestsManagerImpl.java)
URL:
http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/TestsManagerImpl.java?p2=sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/TestsManagerImpl.java&p1=sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/JUnitTestsManagerImpl.java&r1=1073710&r2=1073720&rev=1073720&view=diff
==============================================================================
---
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/JUnitTestsManagerImpl.java
(original)
+++
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/TestsManagerImpl.java
Wed Feb 23 12:25:56 2011
@@ -16,6 +16,7 @@
*/
package org.apache.sling.junit.impl;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -24,8 +25,10 @@ import java.util.Map;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
-import org.apache.sling.junit.JUnitTestsManager;
+import org.apache.sling.junit.Renderer;
+import org.apache.sling.junit.TestsManager;
import org.apache.sling.junit.TestsProvider;
+import org.junit.runner.JUnitCore;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.component.ComponentContext;
@@ -35,7 +38,7 @@ import org.slf4j.LoggerFactory;
@Component
@Service
-public class JUnitTestsManagerImpl implements JUnitTestsManager {
+public class TestsManagerImpl implements TestsManager {
private final Logger log = LoggerFactory.getLogger(getClass());
private ServiceTracker tracker;
private int lastTrackingCount = -1;
@@ -143,4 +146,21 @@ public class JUnitTestsManagerImpl imple
}
lastTrackingCount = tracker.getTrackingCount();
}
+
+ /** @inheritDoc */
+ public void executeTests(Collection<String> testNames, Renderer renderer)
throws IOException {
+ renderer.title(2, "Test classes");
+ renderer.list("testNames", testNames);
+ }
+
+ /** @inheritDoc */
+ public void listTests(Collection<String> testNames, Renderer renderer)
throws Exception {
+ renderer.title(2, "Running tests");
+ final JUnitCore junit = new JUnitCore();
+ junit.addListener(renderer.getRunListener());
+ for(String className : testNames) {
+ renderer.title(3, className);
+ junit.run(getTestClass(className));
+ }
+ }
}
\ No newline at end of file
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=1073720&r1=1073719&r2=1073720&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
Wed Feb 23 12:25:56 2011
@@ -19,7 +19,7 @@ package org.apache.sling.junit.impl.serv
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
-import java.util.List;
+import java.util.Collection;
import javax.servlet.http.HttpServletResponse;
@@ -54,7 +54,7 @@ public class HtmlRenderer extends RunLis
}
/** @inheritDoc */
- public void list(String cssClass, List<String> data) {
+ public void list(String cssClass, Collection<String> data) {
output.println("<ul class='testNames'>");
for(String str : data) {
output.println("<li>");
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=1073720&r1=1073719&r2=1073720&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
Wed Feb 23 12:25:56 2011
@@ -19,7 +19,6 @@ package org.apache.sling.junit.impl.serv
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Dictionary;
@@ -34,16 +33,13 @@ 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.JUnitTestsManager;
import org.apache.sling.junit.Renderer;
+import org.apache.sling.junit.RendererSelector;
import org.apache.sling.junit.RequestParser;
-import org.junit.runner.JUnitCore;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
+import org.apache.sling.junit.TestsManager;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.http.HttpService;
import org.osgi.service.http.NamespaceException;
-import org.osgi.util.tracker.ServiceTracker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,19 +62,15 @@ public class JUnitServlet extends HttpSe
private String servletPath;
@Reference
- private JUnitTestsManager testsManager;
+ private TestsManager testsManager;
@Reference
private HttpService httpService;
- // Keep track of available Renderer
- private final List<Renderer> renderers = new ArrayList<Renderer>();
- private ServiceTracker renderersTracker;
- private int renderersTrackerTrackingCount = -1;
- private BundleContext bundleContext;
+ @Reference
+ private RendererSelector rendererSelector;
protected void activate(ComponentContext ctx) throws ServletException,
NamespaceException {
- bundleContext = ctx.getBundleContext();
final Dictionary<?, ?> config = ctx.getProperties();
boolean disabled =
((Boolean)config.get(SERVLET_DISABLED_NAME)).booleanValue();
if(disabled) {
@@ -89,21 +81,13 @@ public class JUnitServlet extends HttpSe
httpService.registerServlet(servletPath, this, null, null);
log.info("Servlet registered at {}", servletPath);
}
-
- renderersTracker = new ServiceTracker(ctx.getBundleContext(),
Renderer.class.getName(), null);
- renderersTracker.open();
}
protected void deactivate(ComponentContext ctx) throws ServletException,
NamespaceException {
- if(renderersTracker != null) {
- renderersTracker.close();
- renderersTracker = null;
- }
if(servletPath != null) {
httpService.unregister(servletPath);
log.info("Servlet unregistered from path {}", servletPath);
}
- bundleContext = null;
}
/** Return the list of available tests
@@ -125,32 +109,6 @@ public class JUnitServlet extends HttpSe
return testClasses;
}
- /** Return a Renderer, null if none found */
- private Renderer getRenderer(RequestParser rp) {
- if(renderersTracker.getTrackingCount() !=
renderersTrackerTrackingCount) {
- log.debug("Rebuilding list of {}", Renderer.class.getSimpleName());
- renderersTrackerTrackingCount =
renderersTracker.getTrackingCount();
- final ServiceReference [] refs =
renderersTracker.getServiceReferences();
- renderers.clear();
- if(refs != null) {
- for(ServiceReference ref : refs) {
- renderers.add( (Renderer)bundleContext.getService(ref) );
- }
- }
- log.info("List of {} rebuilt: {}",
- Renderer.class.getSimpleName(),
- renderers);
- }
-
- for(Renderer r : renderers) {
- if(r.appliesTo(rp)) {
- return r;
- }
- }
-
- return null;
- }
-
private void sendCss(HttpServletResponse response) throws IOException {
final InputStream str = getClass().getResourceAsStream("/" + CSS);
if(str == null) {
@@ -183,7 +141,7 @@ public class JUnitServlet extends HttpSe
}
final RequestParser requestParser = new RequestParser(request);
- final Renderer renderer = getRenderer(requestParser);
+ final Renderer renderer = rendererSelector.getRenderer(request);
if(renderer == null) {
throw new ServletException("No Renderer found for " +
requestParser);
}
@@ -208,19 +166,11 @@ public class JUnitServlet extends HttpSe
"TestsProvider services for how to supply tests."
);
} else {
- renderer.title(2, "Test classes");
- renderer.list("testNames", testNames);
-
- renderer.title(2, "Running tests");
- final JUnitCore junit = new JUnitCore();
- junit.addListener(renderer.getRunListener());
try {
- for(String className : testNames) {
- renderer.title(3, className);
- junit.run(testsManager.getTestClass(className));
- }
- } catch(ClassNotFoundException cnfe) {
- throw new ServletException("Test class not found", cnfe);
+ testsManager.listTests(testNames, renderer);
+ testsManager.executeTests(testNames, renderer);
+ } catch(Exception e) {
+ throw new ServletException(e);
}
}
renderer.cleanup();
Modified:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java
URL:
http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java?rev=1073720&r1=1073719&r2=1073720&view=diff
==============================================================================
---
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java
(original)
+++
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java
Wed Feb 23 12:25:56 2011
@@ -18,7 +18,7 @@ package org.apache.sling.junit.impl.serv
import java.io.IOException;
import java.io.UnsupportedEncodingException;
-import java.util.List;
+import java.util.Collection;
import javax.servlet.http.HttpServletResponse;
@@ -89,7 +89,7 @@ public class JsonRenderer extends RunLis
}
/** @inheritDoc */
- public void list(String cssClass, List<String> data) {
+ public void list(String cssClass, Collection<String> data) {
try {
startItem("list");
writer.key(INFO_SUBTYPE_KEY).value(cssClass);
Modified:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/PlainTextRenderer.java
URL:
http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/PlainTextRenderer.java?rev=1073720&r1=1073719&r2=1073720&view=diff
==============================================================================
---
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/PlainTextRenderer.java
(original)
+++
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/PlainTextRenderer.java
Wed Feb 23 12:25:56 2011
@@ -19,7 +19,7 @@ package org.apache.sling.junit.impl.serv
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
-import java.util.List;
+import java.util.Collection;
import javax.servlet.http.HttpServletResponse;
@@ -61,7 +61,7 @@ public class PlainTextRenderer extends R
}
/** @inheritDoc */
- public void list(String cssClass, List<String> data) {
+ public void list(String cssClass, Collection<String> data) {
for(String str : data) {
output.println(str);
}
Modified:
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/XmlRenderer.java
URL:
http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/XmlRenderer.java?rev=1073720&r1=1073719&r2=1073720&view=diff
==============================================================================
---
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/XmlRenderer.java
(original)
+++
sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/XmlRenderer.java
Wed Feb 23 12:25:56 2011
@@ -23,8 +23,8 @@ import java.io.UnsupportedEncodingExcept
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Hashtable;
-import java.util.List;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
@@ -129,7 +129,7 @@ public class XmlRenderer extends RunList
}
/** @inheritDoc */
- public void list(String cssClass, List<String> data) {
+ public void list(String cssClass, Collection<String> data) {
}
/** @inheritDoc */