Skip to content

Commit

Permalink
Fixed lingering dependencies on Servlet TCK
Browse files Browse the repository at this point in the history
This dependency should never have been there. Removing the Servlet TCK
classes exposed this.
  • Loading branch information
arjantijms committed Nov 8, 2024
1 parent df92605 commit 4d3a914
Show file tree
Hide file tree
Showing 5 changed files with 241 additions and 12 deletions.
16 changes: 12 additions & 4 deletions ejb30/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,6 @@
<groupId>${project.groupId}</groupId>
<artifactId>common</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>servlet</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
Expand Down Expand Up @@ -102,6 +98,18 @@
<artifactId>jakarta.servlet.jsp-api</artifactId>
</dependency>

<dependency>
<groupId>org.jboss.shrinkwrap</groupId>
<artifactId>shrinkwrap-impl-base</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.junit5</groupId>
<artifactId>arquillian-junit5-core</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-container-test-api</artifactId>
</dependency>
<dependency>
<groupId>jakarta.tck.arquillian</groupId>
<artifactId>arquillian-protocol-common</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -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());

/**
* <code>TEST_HEADER</code> is the constant for the <code>testname</code> header.
*/
private static final String TEST_HEADER = "testname";

/**
* <code>TEST_ARGS</code> is an array of Classes used during reflection.
*/
private static final Class[] TEST_ARGS = { HttpServletRequest.class, HttpServletResponse.class };

/**
* <code>init</code> initializes the servlet.
*
* @param config - <code>ServletConfig</code>
*/
public void init(ServletConfig config) throws ServletException {
super.init(config);
}

/**
* <code>invokeTest</code> uses reflection to invoke test methods in child classes of this particular class.
*
* @param req - <code>HttpServletRequest</code>
* @param res - <code>HttpServletResponse</code>
* @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 <code>doGet</code> method which will call invokeTest.
*
* @param req - <code>HttpServletRequest</code>
* @param res - <code>HttpServletResponse</code>
* @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 <code>doPost</code> method which will call invokeTest.
*
* @param req - <code>HttpServletRequest</code>
* @param res - <code>HttpServletResponse</code>
* @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);
}

}
3 changes: 1 addition & 2 deletions javaee/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,7 @@
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>servlet</artifactId>
<version>11.0.0-SNAPSHOT</version>
<artifactId>common</artifactId>
</dependency>
<dependency>
<groupId>jakarta.inject</groupId>
Expand Down
Original file line number Diff line number Diff line change
@@ -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());

/**
* <code>TEST_HEADER</code> is the constant for the <code>testname</code> header.
*/
private static final String TEST_HEADER = "testname";

/**
* <code>TEST_ARGS</code> is an array of Classes used during reflection.
*/
private static final Class[] TEST_ARGS = { HttpServletRequest.class, HttpServletResponse.class };

/**
* <code>init</code> initializes the servlet.
*
* @param config - <code>ServletConfig</code>
*/
public void init(ServletConfig config) throws ServletException {
super.init(config);
}

/**
* <code>invokeTest</code> uses reflection to invoke test methods in child classes of this particular class.
*
* @param req - <code>HttpServletRequest</code>
* @param res - <code>HttpServletResponse</code>
* @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 <code>doGet</code> method which will call invokeTest.
*
* @param req - <code>HttpServletRequest</code>
* @param res - <code>HttpServletResponse</code>
* @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 <code>doPost</code> method which will call invokeTest.
*
* @param req - <code>HttpServletRequest</code>
* @param res - <code>HttpServletResponse</code>
* @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);
}

}
6 changes: 0 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -291,12 +291,6 @@
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>servlet</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>signaturetest</artifactId>
Expand Down

0 comments on commit 4d3a914

Please sign in to comment.