Skip to content

Commit 5208f3a

Browse files
authored
Merge pull request #17488 from WhiteCat22/resteasy_cdi_spi
update the restfulWS-3.0 feature to use the CDIExtensionMetadata SPI
2 parents 0dace9f + b3f12dc commit 5208f3a

File tree

16 files changed

+350
-59
lines changed

16 files changed

+350
-59
lines changed

dev/com.ibm.ws.jaxrs.2.0.cdi.1.2_fat/.classpath

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@
33
<classpathentry kind="src" path="fat/src"/>
44
<classpathentry kind="src" path="test-applications/basic/src"/>
55
<classpathentry kind="src" path="test-applications/beanvalidation/src"/>
6+
<classpathentry kind="src" path="test-applications/cdiinjectintoapp/src"/>
67
<classpathentry kind="src" path="test-applications/complex/src"/>
7-
<classpathentry kind="src" path="test-applications/contextandCDI/src"/>
8+
<classpathentry kind="src" path="test-applications/contextandCDI/src"/>
89
<classpathentry kind="src" path="test-applications/contextandclient/src"/>
910
<classpathentry kind="src" path="test-applications/disable/src"/>
1011
<classpathentry kind="src" path="test-applications/lifecyclemethod/src"/>
1112
<classpathentry kind="src" path="test-applications/lifecyclemismatch/src"/>
1213
<classpathentry kind="src" path="test-applications/loadonstartup/src"/>
1314
<classpathentry kind="src" path="test-applications/resourceInfoAtStartup/src"/>
1415
<classpathentry kind="src" path="test-applications/interceptor/src"/>
16+
<classpathentry kind="src" path="test-applications/injectIntoApp/src"/>
1517
<classpathentry kind="con" path="aQute.bnd.classpath.container"/>
1618
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
1719
<classpathentry kind="output" path="bin"/>

dev/com.ibm.ws.jaxrs.2.0.cdi.1.2_fat/bnd.bnd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ src: \
1515
fat/src,\
1616
test-applications/basic/src,\
1717
test-applications/beanvalidation/src,\
18+
test-applications/cdiinjectintoapp/src,\
1819
test-applications/complex/src,\
1920
test-applications/contextandclient/src,\
2021
test-applications/contextandCDI/src,\

dev/com.ibm.ws.jaxrs.2.0.cdi.1.2_fat/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,4 @@
1010
*******************************************************************************/
1111
apply from: '../wlp-gradle/subprojects/maven-central-mirror.gradle'
1212

13-
1413
addRequiredLibraries.dependsOn addJakartaTransformer

dev/com.ibm.ws.jaxrs.2.0.cdi.1.2_fat/fat/src/com/ibm/ws/jaxrs20/cdi12/fat/FATSuite.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import com.ibm.ws.jaxrs20.cdi12.fat.test.Basic12Test;
1919
import com.ibm.ws.jaxrs20.cdi12.fat.test.BeanValidation12Test;
20+
import com.ibm.ws.jaxrs20.cdi12.fat.test.CDIInjectIntoAppTest;
2021
import com.ibm.ws.jaxrs20.cdi12.fat.test.Complex12Test;
2122
import com.ibm.ws.jaxrs20.cdi12.fat.test.ContextAndClientTest;
2223
import com.ibm.ws.jaxrs20.cdi12.fat.test.ContextandCDI12Test;
@@ -37,6 +38,7 @@
3738
AlwaysPassesTest.class,
3839
Basic12Test.class, // Skip for JakartaEE9
3940
BeanValidation12Test.class, // Skip for JakartaEE9
41+
CDIInjectIntoAppTest.class,
4042
Complex12Test.class, // Skip for JakartaEE9
4143
ContextAndClientTest.class,
4244
ContextandCDI12Test.class, // Skip for JakartaEE9
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2021 IBM Corporation and others.
3+
* All rights reserved. This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v1.0
5+
* which accompanies this distribution, and is available at
6+
* http://www.eclipse.org/legal/epl-v10.html
7+
*
8+
* Contributors:
9+
* IBM Corporation - initial API and implementation
10+
*******************************************************************************/
11+
package com.ibm.ws.jaxrs20.cdi12.fat.test;
12+
13+
import org.jboss.shrinkwrap.api.spec.WebArchive;
14+
import org.junit.AfterClass;
15+
import org.junit.BeforeClass;
16+
import org.junit.runner.RunWith;
17+
18+
import com.ibm.websphere.simplicity.ShrinkHelper;
19+
import com.ibm.ws.jaxrs20.cdi12.fat.cdiinjectintoapp.CDIInjectIntoAppTestServlet;
20+
21+
import componenttest.annotation.Server;
22+
import componenttest.annotation.SkipForRepeat;
23+
import componenttest.annotation.TestServlet;
24+
import componenttest.custom.junit.runner.FATRunner;
25+
import componenttest.topology.impl.LibertyServer;
26+
import componenttest.topology.utils.FATServletClient;
27+
28+
@RunWith(FATRunner.class)
29+
@SkipForRepeat("EE9_FEATURES") // skip because cdi injection in Application subclasses require the @ApplicationPath annotation in our EE9 implementation
30+
public class CDIInjectIntoAppTest extends FATServletClient {
31+
32+
public static final String APP_NAME = "cdiinjectintoapp";
33+
public static final String SERVER_NAME = APP_NAME;
34+
35+
@Server(SERVER_NAME)
36+
@TestServlet(servlet = CDIInjectIntoAppTestServlet.class, contextRoot = APP_NAME)
37+
public static LibertyServer server;
38+
39+
@BeforeClass
40+
public static void setUp() throws Exception {
41+
WebArchive war = ShrinkHelper.defaultDropinApp(server, APP_NAME, "com.ibm.ws.jaxrs20.cdi12.fat.cdiinjectintoapp");
42+
43+
server.startServer();
44+
}
45+
46+
@AfterClass
47+
public static void tearDown() throws Exception {
48+
server.stopServer();
49+
}
50+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
bootstrap.include=../testports.properties
2+
#com.ibm.ws.logging.max.files=1
3+
#com.ibm.ws.logging.trace.specification=LogService=all:RESTfulWS=all
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2+
<server>
3+
<featureManager>
4+
<feature>componenttest-1.0</feature>
5+
<feature>jaxrs-2.0</feature>
6+
<feature>cdi-1.2</feature>
7+
</featureManager>
8+
<include location="../fatTestPorts.xml"/>
9+
10+
<javaPermission className="java.util.PropertyPermission" name="*" actions="read" />
11+
<javaPermission className="java.net.URLPermission" name="http://localhost:8010/cdiinjectintoapp/app/-" actions="GET:"/>
12+
<javaPermission className="java.net.SocketPermission" name="*" actions="connect,resolve"/>
13+
</server>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<web-app id="HelloworldServlet" version="3.0"
3+
xmlns="http://java.sun.com/xml/ns/javaee"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
6+
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
7+
<servlet>
8+
<servlet-name>com.ibm.ws.jaxrs20.cdi12.fat.cdiinjectintoapp.MyApplication</servlet-name>
9+
</servlet>
10+
<!-- SERVLET MAPPINGS -->
11+
<servlet-mapping>
12+
<servlet-name>com.ibm.ws.jaxrs20.cdi12.fat.cdiinjectintoapp.MyApplication</servlet-name>
13+
<url-pattern>/app/*</url-pattern>
14+
</servlet-mapping>
15+
</web-app>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2021 IBM Corporation and others.
3+
* All rights reserved. This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v1.0
5+
* which accompanies this distribution, and is available at
6+
* http://www.eclipse.org/legal/epl-v10.html
7+
*
8+
* Contributors:
9+
* IBM Corporation - initial API and implementation
10+
*******************************************************************************/
11+
package com.ibm.ws.jaxrs20.cdi12.fat.cdiinjectintoapp;
12+
13+
import static org.junit.Assert.assertEquals;
14+
15+
import java.io.InputStream;
16+
import java.net.HttpURLConnection;
17+
import java.net.URI;
18+
19+
import org.junit.Test;
20+
21+
import componenttest.app.FATServlet;
22+
import javax.servlet.annotation.WebServlet;
23+
24+
@SuppressWarnings("serial")
25+
@WebServlet("/CDIInjectIntoAppTestServlet")
26+
public class CDIInjectIntoAppTestServlet extends FATServlet {
27+
28+
@Test
29+
public void testCanInjectIntoAppAndAppIntoResource() throws Exception {
30+
assertEquals("SUCCESS", testResource("checkAppInjection"));
31+
}
32+
33+
@Test
34+
public void testInjectedBeansHaveCorrectScopes() throws Exception {
35+
assertEquals("1 - 1", testResource("1"));
36+
assertEquals("2 - 2", testResource("1"));
37+
assertEquals("1 - 3", testResource("2"));
38+
assertEquals("3 - 4", testResource("1"));
39+
assertEquals("2 - 5", testResource("2"));
40+
}
41+
42+
private String testResource(String resourcePath) throws Exception {
43+
URI uri = URI.create("http://localhost:" + System.getProperty("bvt.prop.HTTP_default") + "/cdiinjectintoapp/app/resource/" + resourcePath);
44+
HttpURLConnection conn = (HttpURLConnection) uri.toURL().openConnection();
45+
assertEquals(200, conn.getResponseCode());
46+
return readEntity(conn.getInputStream());
47+
}
48+
49+
private String readEntity(InputStream is) throws Exception {
50+
StringBuilder sb = new StringBuilder();
51+
byte[] b = new byte[256];
52+
int i = is.read(b);
53+
while (i > 0) {
54+
sb.append(new String(b, 0, i));
55+
i = is.read(b);
56+
}
57+
return sb.toString().trim();
58+
}
59+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2021 IBM Corporation and others.
3+
* All rights reserved. This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v1.0
5+
* which accompanies this distribution, and is available at
6+
* http://www.eclipse.org/legal/epl-v10.html
7+
*
8+
* Contributors:
9+
* IBM Corporation - initial API and implementation
10+
*******************************************************************************/
11+
package com.ibm.ws.jaxrs20.cdi12.fat.cdiinjectintoapp;
12+
13+
public interface InvocationCounter {
14+
15+
int invoke();
16+
17+
int getInvocations();
18+
}

0 commit comments

Comments
 (0)