Skip to content

Commit f439c5e

Browse files
niloc132sparsick
andauthored
Add a new release artifact for jakarta.servlet support (#9845)
Introduces a new release artifact for jakarta-based servlet containers, for both gwt-servlet and requestfactory-server. These jars contain only minor changes in packaging for the servlet-specific classes that differ. Generated javadocs continue to reflect the combined contents of all jars, with specific notes about jakarta.servlet usage in their respective packages. Fixes #9727 Co-authored-by: Sandra Parsick <[email protected]>
1 parent f9028fe commit f439c5e

File tree

19 files changed

+443
-18
lines changed

19 files changed

+443
-18
lines changed

build_tools/doctool/src/com/google/doctool/custom/FindPackages.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public class FindPackages {
8585
*/
8686
private static final String[] SOURCE_DIRS = {
8787
"user/src", "user/javadoc", "user/super", "dev/core/src",
88-
"dev/core/super"};
88+
"dev/core/super", "build/out/user/jakarta-src"};
8989

9090
/**
9191
* Individual user classes to include, even if the rest of their packages

distro-source/build.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
<zipfileset file="${gwt.build.lib}/gwt-dev.jar" prefix="${project.distname}" />
3333
<zipfileset file="${gwt.build.lib}/gwt-user.jar" prefix="${project.distname}" />
3434
<zipfileset file="${gwt.build.lib}/gwt-servlet.jar" prefix="${project.distname}" />
35+
<zipfileset file="${gwt.build.lib}/gwt-servlet-jakarta.jar" prefix="${project.distname}" />
3536
<zipfileset file="${gwt.build.lib}/gwt-codeserver.jar" prefix="${project.distname}" />
3637
<zipfileset file="${gwt.build.lib}/gwt-servlet-deps.jar" prefix="${project.distname}" />
3738
<zipfileset file="${gwt.build.lib}/gwt-api-checker.jar" prefix="${project.distname}" />

doc/build.xml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
<pathelement location="${gwt.root}/user/super" />
1919
<pathelement location="${gwt.root}/dev/core/src" />
2020
<pathelement location="${gwt.root}/dev/core/super" />
21+
<pathelement location="${project.build}/../user/jakarta-src" />
22+
<pathelement location="${project.build}/jakarta-src" />
2123
</path>
2224

2325
<path id="USER_CLASS_PATH">
@@ -27,6 +29,7 @@
2729
<pathelement location="${gwt.tools.lib}/javax/validation/validation-api-1.0.0.GA.jar" />
2830
<pathelement location="${gwt.tools.lib}/javax/validation/validation-api-1.0.0.GA-sources.jar" />
2931
<pathelement location="${gwt.tools.lib}/selenium/selenium-java-client-driver.jar" />
32+
<pathelement location="${gwt.tools.lib}/jakarta-servlet/jakarta.servlet-api-5.0.0/jakarta.servlet-api-5.0.0.jar" />
3033
</path>
3134

3235
<path id="DOC_PATH">
@@ -35,11 +38,27 @@
3538
<path refid="USER_SOURCE_PATH" />
3639
</path>
3740

41+
<!-- Make an extra copy of this example just for javadocs, so that it can be modified to use jakarta, and the rewriting of the RPC class can point at it -->
42+
<target name="jakartaJavadocSources">
43+
<copy file="${gwt.root}/user/javadoc/com/google/gwt/examples/rpc/server/AdvancedExample.java" todir="${project.build}/jakarta-src/com/google/gwt/examples/rpc/server/jakarta/" encoding="${javac.encoding}">
44+
<filterchain>
45+
<tokenfilter>
46+
<replacestring from="package com.google.gwt.examples.rpc.server" to="package com.google.gwt.examples.rpc.server.jakarta"/>
47+
<replacestring from="com.google.gwt.user.server.rpc.RPC" to="com.google.gwt.user.server.rpc.jakarta.RPC"/>
48+
<replacestring from="javax.servlet" to="jakarta.servlet"/>
49+
</tokenfilter>
50+
</filterchain>
51+
</copy>
52+
</target>
53+
3854
<!-- Rebuild the javadoc if a source file is newer than the index-->
39-
<target name="javadoc">
55+
<target name="javadoc" depends="jakartaJavadocSources">
4056
<outofdate>
4157
<sourcefiles>
4258
<fileset file="./src/gwt-user.html" />
59+
<fileset dir="${project.build}/../user/jakarta-src">
60+
<include name="**/*.java" />
61+
</fileset>
4362
<fileset dir="${gwt.root}/user/src">
4463
<include name="**/*.java" />
4564
</fileset>

maven/lib-gwt.sh

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ function maven-gwt() {
7676
popd > /dev/null
7777
done
7878

79-
gwtLibs='dev user servlet codeserver'
79+
gwtLibs='dev user servlet servlet-jakarta codeserver'
8080

8181
echo "Removing bundled third-parties from gwt-dev"
8282
zip -q $GWT_EXTRACT_DIR/gwt-dev.jar --copy --out $GWT_EXTRACT_DIR/gwt-dev-trimmed.jar \
@@ -118,8 +118,9 @@ function maven-gwt() {
118118
# If there are no sources, use gwt-user sources.
119119
# This is a bit hacky but Sonatype requires a
120120
# source jar for Central, and lack of sources
121-
# should only happen for gwt-servlet which is
122-
# basically a subset of gwt-user.
121+
# should only happen for gwt-servlet and
122+
# gwt-servlet-jakarta, which are basically a
123+
# subset of gwt-user.
123124
if [ ! -f $SOURCES_PATH_FILE ]; then
124125
SOURCES_PATH_FILE=$GWT_EXTRACT_DIR/gwt-user-sources.jar
125126
fi
@@ -130,7 +131,7 @@ function maven-gwt() {
130131
# Deploy RequestFactory jars
131132
maven-deploy-file $mavenRepoUrl $mavenRepoId $pomDir/requestfactory/pom.xml $pomDir/requestfactory/pom.xml || die
132133

133-
for i in client server apt
134+
for i in client server apt server-jakarta
134135
do
135136
maven-deploy-file $mavenRepoUrl $mavenRepoId $GWT_EXTRACT_DIR/requestfactory-${i}.jar $pomDir/requestfactory/${i}/pom.xml \
136137
$JAVADOC_FILE_PATH $GWT_EXTRACT_DIR/requestfactory-${i}-src.jar \
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<parent>
7+
<groupId>org.gwtproject</groupId>
8+
<artifactId>gwt</artifactId>
9+
<version>${gwtVersion}</version>
10+
</parent>
11+
<groupId>org.gwtproject</groupId>
12+
<artifactId>gwt-servlet-jakarta</artifactId>
13+
<packaging>jar</packaging>
14+
<version>${gwtVersion}</version>
15+
<dependencies>
16+
<dependency>
17+
<groupId>javax.validation</groupId>
18+
<artifactId>validation-api</artifactId>
19+
<!-- needed by RequestFactory -->
20+
<optional>true</optional>
21+
</dependency>
22+
<dependency>
23+
<groupId>com.google.code.gson</groupId>
24+
<artifactId>gson</artifactId>
25+
<!-- Used for source-mapping in stacktrace deobfuscation for logging -->
26+
<optional>true</optional>
27+
</dependency>
28+
</dependencies>
29+
</project>

maven/poms/gwt/pom-template.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@
6666
<artifactId>gwt-servlet</artifactId>
6767
<version>${project.version}</version>
6868
</dependency>
69+
<dependency>
70+
<groupId>org.gwtproject</groupId>
71+
<artifactId>gwt-servlet-jakarta</artifactId>
72+
<version>${project.version}</version>
73+
</dependency>
6974
<dependency>
7075
<groupId>org.gwtproject.web.bindery</groupId>
7176
<artifactId>requestfactory</artifactId>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<parent>
7+
<groupId>org.gwtproject.web.bindery</groupId>
8+
<artifactId>requestfactory</artifactId>
9+
<version>${gwtVersion}</version>
10+
</parent>
11+
<groupId>org.gwtproject.web.bindery</groupId>
12+
<artifactId>requestfactory-server-jakarta</artifactId>
13+
<packaging>jar</packaging>
14+
<version>${gwtVersion}</version>
15+
<dependencies>
16+
<dependency>
17+
<groupId>javax.validation</groupId>
18+
<artifactId>validation-api</artifactId>
19+
</dependency>
20+
<dependency>
21+
<groupId>com.google.code.gson</groupId>
22+
<artifactId>gson</artifactId>
23+
<!-- Used for source-mapping in stacktrace deobfuscation for logging -->
24+
<optional>true</optional>
25+
</dependency>
26+
</dependencies>
27+
</project>

requestfactory/build.xml

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,24 @@
2121
<!-- Build a jar file containing a subset of requestfactory -->
2222
<macrodef name="requestfactory-jar">
2323
<!--
24-
"target" should be one of {client,server,all}[(+|-)src] or test[-src].
24+
"target" should be one of {client,server,all,apt}[(+|-)src] or test[-src].
2525
-src includes .java files only, +src includes .java and .class files
2626
-->
2727
<attribute name="target" default="client"/>
28+
<!--
29+
"main" defaults to the javax.servlet extractor type, but should be set to
30+
the jakarta variant to correctly package jakarta server .class and .java
31+
files.
32+
-->
33+
<attribute name="main" default="com.google.web.bindery.requestfactory.server.RequestFactoryJarExtractor" />
2834
<sequential>
29-
<java failonerror="true" fork="true"
30-
classname="com.google.web.bindery.requestfactory.server.RequestFactoryJarExtractor">
35+
<java failonerror="true" fork="true" classname="@{main}">
3136
<classpath>
3237
<fileset dir="${gwt.build.lib}" includes="gwt-user.jar,gwt-dev.jar" />
38+
<pathelement location="${gwt.tools.lib}/jakarta-servlet/jakarta.servlet-api-5.0.0/jakarta.servlet-api-5.0.0.jar" />
3339
<pathelement location="${gwt.tools.lib}/junit/junit-4.8.2.jar" />
3440
<pathelement path="${gwt.build.out}/user/bin" />
41+
<pathelement path="${gwt.build.out}/user/bin-jakarta" />
3542
<pathelement path="${gwt.build.out}/dev/bin-test" />
3643
<pathelement path="${gwt.build.out}/user/bin-test" />
3744
</classpath>
@@ -81,6 +88,18 @@
8188
<requestfactory-jar target="server+src"/>
8289
</target>
8390

91+
<target name="requestfactory-server-jakarta" description="Build RequestFactory server jar for jakarta.servlet">
92+
<requestfactory-jar target="server-jakarta" main="com.google.web.bindery.requestfactory.server.jakarta.RequestFactoryJarExtractor"/>
93+
</target>
94+
95+
<target name="requestfactory-server-jakarta-src" description="Build RequestFactory server source jar for jakarta.servlet">
96+
<requestfactory-jar target="server-jakarta-src" main="com.google.web.bindery.requestfactory.server.jakarta.RequestFactoryJarExtractor"/>
97+
</target>
98+
99+
<target name="requestfactory-server-jakarta+src" description="Build RequestFactory server source/class jar for jakarta.servlet">
100+
<requestfactory-jar target="server-jakarta+src" main="com.google.web.bindery.requestfactory.server.jakarta.RequestFactoryJarExtractor"/>
101+
</target>
102+
84103
<!-- This target requires classes from ../build/{dev,user}/bin-test -->
85104
<target name="requestfactory-test"
86105
unless="test.requestfactory.disable"
@@ -93,7 +112,7 @@
93112
<target name="clientjars" depends="requestfactory-apt,requestfactory-apt-src,requestfactory-client,requestfactory-client-src,requestfactory-client+src" description="Build requestfactory client jars" />
94113

95114
<!-- Build all server jars -->
96-
<target name="serverjars" depends="requestfactory-server,requestfactory-server-src,requestfactory-server+src" description="Build requestfactory server jars" />
115+
<target name="serverjars" depends="requestfactory-server,requestfactory-server-src,requestfactory-server+src,requestfactory-server-jakarta,requestfactory-server-jakarta-src,requestfactory-server-jakarta+src" description="Build requestfactory server jars" />
97116

98117
<!-- Default target, build client and server jars.
99118
Assumes the 'user' target has been built in the trunk directory

servlet/build.xml

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
<property.ensure name="gwt.user.build" location="${gwt.build.out}/user" />
99
<property.ensure name="gwt.dev.bin" location="${gwt.dev.build}/bin" />
1010
<property.ensure name="gwt.user.bin" location="${gwt.user.build}/bin" />
11-
11+
<property.ensure name="gwt.user-jakarta.bin" location="${gwt.user.build}/bin-jakarta" />
1212
<property name="project.lib.deps"
1313
location="${gwt.build.lib}/gwt-${ant.project.name}-deps.jar" />
1414

1515
<target name="build" description="Packages this project into a jar"
16-
depends="-servlet, -deps" />
16+
depends="-servlet, -servlet-jakarta, -deps" />
1717

1818
<target name="clean" description="Cleans this project's intermediate and output files">
1919
<delete file="${project.lib}" />
@@ -52,6 +52,37 @@
5252
<!-- additional dependencies (used by scripts). -->
5353
</gwt.jar>
5454
</target>
55+
<target name="-servlet-jakarta" description="Packages this project into a jar for use with modern jakarta apis">
56+
<mkdir dir="${gwt.build.lib}" />
57+
<gwt.jar destfile="${gwt.build.lib}/gwt-servlet-jakarta.jar">
58+
<!-- Rebased dependencies go in gwt-servlet too -->
59+
<zipfileset src="${gwt.tools.lib}/guava/guava-19.0/guava-19.0-rebased.jar" />
60+
<zipfileset src="${gwt.tools.lib}/jscomp/20160315/sourcemap-rebased.jar" />
61+
<zipfileset src="${gwt.tools.lib}/json/android-sdk-19.1/json-android-rebased.jar" />
62+
<zipfileset src="${gwt.tools.lib}/streamhtmlparser/streamhtmlparser-jsilver-r10/streamhtmlparser-jsilver-r10-1.5-rebased.jar" />
63+
<zipfileset src="${gwt.tools.lib}/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar" />
64+
<fileset dir="${gwt.dev.bin}">
65+
<include name="com/google/gwt/dev/asm/**" />
66+
<include name="com/google/gwt/dev/util/Name*.class" />
67+
<include name="com/google/gwt/dev/util/StringKey.class" />
68+
<include name="com/google/gwt/util/tools/shared/**" />
69+
<include name="com/google/gwt/core/shared/**" />
70+
</fileset>
71+
<fileset dir="${gwt.user-jakarta.bin}">
72+
<exclude name="**/rebind/**" />
73+
<exclude name="**/tools/**" />
74+
<exclude name="**/super/**" />
75+
<exclude name="com/google/gwt/json/**" />
76+
<exclude name="com/google/gwt/junit/*" />
77+
<exclude name="com/google/gwt/junit/client/GWTTestCase.*" />
78+
<exclude name="com/google/gwt/junit/remote/**" />
79+
<exclude name="com/google/gwt/junit/server/**" />
80+
<exclude name="com/google/gwt/benchmarks/*" />
81+
<exclude name="**/*.gwtar" />
82+
</fileset>
83+
<!-- additional dependencies (used by scripts). -->
84+
</gwt.jar>
85+
</target>
5586

5687
<target name="-deps" description="Packages this project's dependencies into a jar">
5788
<mkdir dir="${gwt.build.lib}" />

0 commit comments

Comments
 (0)