Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Lib/modjy/modjy.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
import sys
import types

sys.add_package("javax.servlet")
sys.add_package("javax.servlet.http")
sys.add_package("jakarta.servlet")
sys.add_package("jakarta.servlet.http")
sys.add_package("org.python.core")

from modjy_exceptions import *
Expand All @@ -35,7 +35,7 @@
from modjy_impl import modjy_impl
from modjy_publish import modjy_publisher

from javax.servlet.http import HttpServlet
from jakarta.servlet.http import HttpServlet

class modjy_servlet(HttpServlet, modjy_publisher, modjy_wsgi, modjy_impl):

Expand Down
2 changes: 1 addition & 1 deletion Lib/modjy/modjy_exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

from java.lang import IllegalStateException
from java.io import IOException
from javax.servlet import ServletException
from jakarta.servlet import ServletException

class ModjyException(Exception): pass

Expand Down
2 changes: 1 addition & 1 deletion Lib/test/pyservlet/basic.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from javax.servlet.http import HttpServlet
from jakarta.servlet.http import HttpServlet

class basic(HttpServlet):
def doGet(self, req, resp):
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/pyservlet/filter.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from javax.servlet import Filter
from jakarta.servlet import Filter

class filter(Filter):
def init(self, config):
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/pyservlet/increment.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from javax.servlet.http import HttpServlet
from jakarta.servlet.http import HttpServlet

class increment(HttpServlet):
def __init__(self):
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/pyservlet/updated_basic.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from javax.servlet.http import HttpServlet
from jakarta.servlet.http import HttpServlet

class basic(HttpServlet):
def doGet(self, req, resp):
Expand Down
10 changes: 10 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,17 @@ Jython 2.7.5

New Features

- Servlet support is updated to use the jakarta namespace. As part of this
change, the classes org.python.util.PyServlet, org.python.util.PyFilter
and org.python.util.PyServletInitializer have been relocated to a new
package org.python.servlet. Users should double-check that this change is
adjusted in their config if necessary.
The relocation allows adding the old classes (with javax.servlet imports)
to the classpath on top of jython.jar without name conflict. In many cases
this should suffice to retain workability of a legacy setup if needed.

Jython 2.7.5a1 Bugs fixed
- [ GH-382 ] Java EE Servlet Namespace Has Been Changed From javax.servlet to jakarta.servlet



Expand Down
2 changes: 1 addition & 1 deletion b/.idea/libraries/extlibs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,7 @@ dependencies {
* choose the latest required.
*/

// Using a version available from repo (not 'extlibs/servlet-api-2.5' as in build.xml)
implementation 'javax.servlet:javax.servlet-api:3.1.0'
implementation 'jakarta.servlet:jakarta.servlet-api:5.0.0'

/*
* These seem to be unnecessary while the proprietary database support is
Expand Down
4 changes: 2 additions & 2 deletions build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ informix.jar = ../support/jdbc-4.10.12.jar

<!-- Further database and Java EE-related JARs -->
<filelist dir="${extlibs.dir}">
<file name="servlet-api-2.5.jar" />
<file name="jakarta.servlet-api-5.0.0.jar" />
<file name="mysql-connector-java-5.1.42-bin.jar" />
<file name="postgresql-42.1.1.jre7.jar" />
</filelist>
Expand Down Expand Up @@ -1259,7 +1259,7 @@ The text for an official release would continue like ...
<exclude name="extlibs/asm*.jar" />
<exclude name="extlibs/jarjar*.jar" />
<exclude name="extlibs/junit*.jar" />
<exclude name="extlibs/servlet-api*.jar" />
<exclude name="extlibs/jakarta.servlet-api-*.jar" />
<exclude name="extlibs/stringtemplate*.jar" />
<exclude name="extlibs/xerces*.jar" />
</fileset>
Expand Down
Binary file added extlibs/jakarta.servlet-api-5.0.0.jar
Binary file not shown.
Binary file removed extlibs/servlet-api-2.5.jar
Binary file not shown.
12 changes: 6 additions & 6 deletions src/com/xhaus/modjy/ModjyJServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,6 @@
import java.util.Enumeration;
import java.util.Properties;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.python.core.Options;
import org.python.core.Py;
import org.python.core.PyException;
Expand All @@ -42,6 +36,12 @@
import org.python.core.PyType;
import org.python.util.PythonInterpreter;

import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

public class ModjyJServlet extends HttpServlet {

protected final static String MODJY_PYTHON_CLASSNAME = "modjy_servlet";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
package org.python.util;
package org.python.servlet;

import java.io.File;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.FilterConfig;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;

import org.python.core.PyException;
import org.python.util.PythonInterpreter;

/**
* Enables you to write Jython modules that inherit from <code>javax.servlet.Filter</code>, and to
* insert them in your servlet container's filter chain, like any Java <code>Filter</code>.
* Enables you to write Jython modules that inherit from <code>jakarta.servlet.Filter</code>, and to insert them in your
* servlet container's filter chain, like any Java <code>Filter</code>.
*
* <p>
* Example:
Expand All @@ -24,10 +25,10 @@
* <b>/WEB-INF/filters/HeaderFilter.py:</b>
*
* <pre>
* from javax.servlet import Filter
* from jakarta.servlet import Filter
*
* # Module must contain a class with the same name as the module
* # which in turn must implement javax.servlet.Filter
* # which in turn must implement jakarta.servlet.Filter
* class HeaderFilter (Filter):
* def init(self, config):
* self.header = config.getInitParameter('header')
Expand All @@ -44,14 +45,14 @@
* <pre>
* &lt;!-- Initialize the Jython runtime --&gt;
* &lt;listener&gt;
* &lt;listener-class&gt;org.python.util.PyServletInitializer&lt;/listener-class&gt;
* &lt;listener-class&gt;org.python.servlet.PyServletInitializer&lt;/listener-class&gt;
* &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
* &lt;/listener&gt;
*
* &lt;!-- Declare a uniquely-named PyFilter --&gt;
* &lt;filter&gt;
* &lt;filter-name&gt;HeaderFilter&lt;/filter-name&gt;
* &lt;filter-class&gt;org.python.util.PyFilter&lt;/filter-class&gt;
* &lt;filter-class&gt;org.python.servlet.PyFilter&lt;/filter-class&gt;
*
* &lt;!-- The special param __filter__ gives the context-relative path to the Jython source file --&gt;
* &lt;init-param&gt;
Expand Down Expand Up @@ -83,7 +84,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
public void init(FilterConfig config) throws ServletException {
if (config.getServletContext().getAttribute(PyServlet.INIT_ATTR) == null) {
throw new ServletException("Jython has not been initialized. Add "
+ "org.python.util.PyServletInitializer as a listener to your "
+ "org.python.servlet.PyServletInitializer as a listener to your "
+ "web.xml.");
}
this.config = config;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.python.util;
package org.python.servlet;

import java.io.File;
import java.io.IOException;
Expand All @@ -10,12 +10,12 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;

import org.python.Version;
import org.python.core.PrePy;
Expand All @@ -24,6 +24,8 @@
import org.python.core.PyObject;
import org.python.core.PyString;
import org.python.core.PySystemState;
import org.python.util.Generic;
import org.python.util.PythonInterpreter;

/**
* This servlet is used to re-serve Jython servlets. It stores bytecode for Jython servlets and
Expand All @@ -32,7 +34,7 @@
* e.g. {@code http://localhost:8080/test/hello.py}
* <pre>{@literal
*
* from javax.servlet.http import HttpServlet
* from jakarta.servlet.http import HttpServlet
* class hello(HttpServlet):
* def doGet(self, req, res):
* res.setContentType("text/html");
Expand All @@ -50,7 +52,7 @@
* <web-app>
* <servlet>
* <servlet-name>PyServlet</servlet-name>
* <servlet-class>org.python.util.PyServlet</servlet-class>
* <servlet-class>org.python.servlet.PyServlet</servlet-class>
* <init-param>
* <param-name>python.home</param-name>
* <param-value>/usr/home/jython-2.5</param-value>
Expand Down Expand Up @@ -124,10 +126,10 @@ protected static void init(Properties props, ServletContext context) {
}

PySystemState.initialize(baseProps, props, new String[0]);
PySystemState.add_package("javax.servlet");
PySystemState.add_package("javax.servlet.http");
PySystemState.add_package("javax.servlet.jsp");
PySystemState.add_package("javax.servlet.jsp.tagext");
PySystemState.add_package("jakarta.servlet");
PySystemState.add_package("jakarta.servlet.http");
PySystemState.add_package("jakarta.servlet.jsp");
PySystemState.add_package("jakarta.servlet.jsp.tagext");
PySystemState.add_classdir(rootPath + "WEB-INF" + File.separator + "classes");
PySystemState.add_extdir(rootPath + "WEB-INF" + File.separator + "lib", true);
}
Expand Down Expand Up @@ -157,7 +159,7 @@ public void service(ServletRequest req, ServletResponse res)
{
req.setAttribute("pyservlet", this);

String spath = (String) req.getAttribute("javax.servlet.include.servlet_path");
String spath = (String) req.getAttribute("jakarta.servlet.include.servlet_path");
if (spath == null) {
spath = ((HttpServletRequest)req).getServletPath();
if (spath == null || spath.length() == 0) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package org.python.util;
package org.python.servlet;

import java.util.Properties;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import jakarta.servlet.ServletContextEvent;
import jakarta.servlet.ServletContextListener;

/**
* Initializes the jython runtime inside a servlet engine. Should be used with {@link PyFilter} to
Expand All @@ -12,7 +12,7 @@
*
* <pre>
* &lt;listener&gt;
* &lt;listener-class&gt;org.python.util.PyServletInitializer&lt;/listener-class&gt;
* &lt;listener-class&gt;org.python.servlet.PyServletInitializer&lt;/listener-class&gt;
* &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
* &lt;/listener&gt;
*</pre>
Expand Down
4 changes: 2 additions & 2 deletions tests/modjy/java/com/xhaus/modjy/ModjyTestBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@

import org.jdom.output.XMLOutputter;
import org.python.core.PyObject;
import org.python.util.PyFilterTest;
import org.python.util.PyServletTest;
import org.python.servlet.PyFilterTest;
import org.python.servlet.PyServletTest;
import org.python.util.PythonInterpreter;

import com.mockrunner.mock.web.MockHttpServletRequest;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

package com.xhaus.modjy;

import javax.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServlet;

public class ModjyTestInterpreterLifecycle extends ModjyTestBase {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.python.util;
package org.python.servlet;

import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;

import com.mockrunner.mock.web.MockFilterConfig;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.python.util;
package org.python.servlet;

import javax.servlet.ServletException;
import jakarta.servlet.ServletException;

import org.python.core.PyFile;
import com.mockrunner.base.NestedApplicationException;
Expand Down