diff --git a/ejb30/pom.xml b/ejb30/pom.xml index d12fa5da91..933ca2781a 100644 --- a/ejb30/pom.xml +++ b/ejb30/pom.xml @@ -45,10 +45,6 @@ ${project.groupId} common - - ${project.groupId} - servlet - org.apache.commons commons-lang3 @@ -102,6 +98,18 @@ jakarta.servlet.jsp-api + + org.jboss.shrinkwrap + shrinkwrap-impl-base + + + org.jboss.arquillian.junit5 + arquillian-junit5-core + + + org.jboss.arquillian.container + arquillian-container-test-api + jakarta.tck.arquillian arquillian-protocol-common diff --git a/ejb30/src/main/java/com/sun/ts/tests/servlet/common/servlets/HttpTCKServlet.java b/ejb30/src/main/java/com/sun/ts/tests/servlet/common/servlets/HttpTCKServlet.java new file mode 100644 index 0000000000..bc2d28633b --- /dev/null +++ b/ejb30/src/main/java/com/sun/ts/tests/servlet/common/servlets/HttpTCKServlet.java @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2007, 2020 Oracle and/or its affiliates. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ + +package com.sun.ts.tests.servlet.common.servlets; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.lang.System.Logger; + +/** + * GenericTCKServlet.java + * + * Any test that would normally extend GenericServlet will instead extend this class. This will provide a simple + * framework from invoking various tests defined as methods within the servlet that extends this class. + * + * Created: Wed Jul 31 20:57:16 2002 + * + * @version %I% + */ +public abstract class HttpTCKServlet extends HttpServlet { + + private static final String TEXT_PLAIN = "text/plain"; + + protected static final Logger logger = System.getLogger(HttpTCKServlet.class.getName()); + + /** + * TEST_HEADER is the constant for the testname header. + */ + private static final String TEST_HEADER = "testname"; + + /** + * TEST_ARGS is an array of Classes used during reflection. + */ + private static final Class[] TEST_ARGS = { HttpServletRequest.class, HttpServletResponse.class }; + + /** + * init initializes the servlet. + * + * @param config - ServletConfig + */ + public void init(ServletConfig config) throws ServletException { + super.init(config); + } + + /** + * invokeTest uses reflection to invoke test methods in child classes of this particular class. + * + * @param req - HttpServletRequest + * @param res - HttpServletResponse + * @exception ServletException if an error occurs + */ + protected void invokeTest(HttpServletRequest req, HttpServletResponse res) throws ServletException { + res.setContentType(TEXT_PLAIN); + char[] temp = req.getParameter(TEST_HEADER).toCharArray(); + temp[0] = Character.toLowerCase(temp[0]); + String test = new String(temp); + + try { + Method method = this.getClass().getMethod(test, TEST_ARGS); + method.invoke(this, new Object[] { req, res }); + } catch (InvocationTargetException ite) { + throw new ServletException(ite.getTargetException()); + } catch (NoSuchMethodException nsme) { + throw new ServletException("Test: " + test + " does not exist"); + } catch (Throwable t) { + throw new ServletException("Error executing test: " + test, t); + } + } + + /** + * A basic implementation of the doGet method which will call invokeTest. + * + * @param req - HttpServletRequest + * @param res - HttpServletResponse + * @exception ServletException if an error occurs + * @exception IOException if an IO error occurs + */ + public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + invokeTest(req, res); + } + + /** + * A basic implementation of the doPost method which will call invokeTest. + * + * @param req - HttpServletRequest + * @param res - HttpServletResponse + * @exception ServletException if an error occurs + * @exception IOException if an IO error occurs + */ + public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + invokeTest(req, res); + } + +} diff --git a/javaee/pom.xml b/javaee/pom.xml index aed9648a76..ce4e9aae99 100644 --- a/javaee/pom.xml +++ b/javaee/pom.xml @@ -42,8 +42,7 @@ ${project.groupId} - servlet - 11.0.0-SNAPSHOT + common jakarta.inject diff --git a/javaee/src/main/java/com/sun/ts/tests/servlet/common/servlets/HttpTCKServlet.java b/javaee/src/main/java/com/sun/ts/tests/servlet/common/servlets/HttpTCKServlet.java new file mode 100644 index 0000000000..bc2d28633b --- /dev/null +++ b/javaee/src/main/java/com/sun/ts/tests/servlet/common/servlets/HttpTCKServlet.java @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2007, 2020 Oracle and/or its affiliates. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ + +package com.sun.ts.tests.servlet.common.servlets; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.lang.System.Logger; + +/** + * GenericTCKServlet.java + * + * Any test that would normally extend GenericServlet will instead extend this class. This will provide a simple + * framework from invoking various tests defined as methods within the servlet that extends this class. + * + * Created: Wed Jul 31 20:57:16 2002 + * + * @version %I% + */ +public abstract class HttpTCKServlet extends HttpServlet { + + private static final String TEXT_PLAIN = "text/plain"; + + protected static final Logger logger = System.getLogger(HttpTCKServlet.class.getName()); + + /** + * TEST_HEADER is the constant for the testname header. + */ + private static final String TEST_HEADER = "testname"; + + /** + * TEST_ARGS is an array of Classes used during reflection. + */ + private static final Class[] TEST_ARGS = { HttpServletRequest.class, HttpServletResponse.class }; + + /** + * init initializes the servlet. + * + * @param config - ServletConfig + */ + public void init(ServletConfig config) throws ServletException { + super.init(config); + } + + /** + * invokeTest uses reflection to invoke test methods in child classes of this particular class. + * + * @param req - HttpServletRequest + * @param res - HttpServletResponse + * @exception ServletException if an error occurs + */ + protected void invokeTest(HttpServletRequest req, HttpServletResponse res) throws ServletException { + res.setContentType(TEXT_PLAIN); + char[] temp = req.getParameter(TEST_HEADER).toCharArray(); + temp[0] = Character.toLowerCase(temp[0]); + String test = new String(temp); + + try { + Method method = this.getClass().getMethod(test, TEST_ARGS); + method.invoke(this, new Object[] { req, res }); + } catch (InvocationTargetException ite) { + throw new ServletException(ite.getTargetException()); + } catch (NoSuchMethodException nsme) { + throw new ServletException("Test: " + test + " does not exist"); + } catch (Throwable t) { + throw new ServletException("Error executing test: " + test, t); + } + } + + /** + * A basic implementation of the doGet method which will call invokeTest. + * + * @param req - HttpServletRequest + * @param res - HttpServletResponse + * @exception ServletException if an error occurs + * @exception IOException if an IO error occurs + */ + public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + invokeTest(req, res); + } + + /** + * A basic implementation of the doPost method which will call invokeTest. + * + * @param req - HttpServletRequest + * @param res - HttpServletResponse + * @exception ServletException if an error occurs + * @exception IOException if an IO error occurs + */ + public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + invokeTest(req, res); + } + +} diff --git a/pom.xml b/pom.xml index 68bddd3a7f..a1a0029cd9 100644 --- a/pom.xml +++ b/pom.xml @@ -291,12 +291,6 @@ ${project.version} - - ${project.groupId} - servlet - ${project.version} - - ${project.groupId} signaturetest