[ONOS-4042] Bump up Jersey from 1.19 to 2.22.2
- Fix unit test errors of web/api
- Fix default page redirection problem
- Fix compilation errors of web/gui
- Fix configuration of aaa, acl, cordfabric, cord-gui, dhcp, mfwd,
olt, openstack, segmentrouting, vtn, virtualbng, xos-integration
- Fix unit test errors of cpman, vtn, acl, faultmanagement
- Fix compilation errors of openstack, virtualbng, xos-integration,
REST SB controller
- Rearrange features.xml to resolve bundle dependencies
- Remove all of stale Jersey 1.x libraries
- Rearrange web.xml to point new Jersey 2.x servlet
Change-Id: Ic17f461ede0aa36fa8d470546d8069152dc1d134
diff --git a/apps/acl/src/main/webapp/WEB-INF/web.xml b/apps/acl/src/main/webapp/WEB-INF/web.xml
index bd5de2f..fc8db36 100644
--- a/apps/acl/src/main/webapp/WEB-INF/web.xml
+++ b/apps/acl/src/main/webapp/WEB-INF/web.xml
@@ -45,7 +45,7 @@
<servlet>
<servlet-name>JAX-RS Service</servlet-name>
- <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
+ <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.onosproject.acl.AclWebApplication</param-value>
diff --git a/apps/acl/src/test/java/org/onosproject/acl/AclWebResourceTest.java b/apps/acl/src/test/java/org/onosproject/acl/AclWebResourceTest.java
index c554db6..34765a4 100644
--- a/apps/acl/src/test/java/org/onosproject/acl/AclWebResourceTest.java
+++ b/apps/acl/src/test/java/org/onosproject/acl/AclWebResourceTest.java
@@ -20,9 +20,8 @@
package org.onosproject.acl;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.test.framework.AppDescriptor;
-import com.sun.jersey.test.framework.WebAppDescriptor;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.glassfish.jersey.test.JerseyTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
@@ -31,30 +30,42 @@
import org.onlab.osgi.TestServiceDirectory;
import org.onlab.rest.BaseResource;
import org.onosproject.core.IdGenerator;
-import org.onosproject.rest.ResourceTest;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
-import static org.easymock.EasyMock.*;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertThat;
/**
* Test class for ACL application REST resource.
*/
-public class AclWebResourceTest extends ResourceTest {
+public class AclWebResourceTest extends JerseyTest {
final AclService mockAclService = createMock(AclService.class);
final AclStore mockAclStore = createMock(AclStore.class);
final List<AclRule> rules = new ArrayList<>();
+ /**
+ * Constructs a control metrics collector resource test instance.
+ */
+ public AclWebResourceTest() {
+ super(ResourceConfig.forApplicationClass(AclWebApplication.class));
+ }
+
@Before
- public void setUp() {
+ public void setUpMock() {
expect(mockAclService.getAclRules()).andReturn(rules).anyTimes();
- ServiceDirectory testDirectory = new TestServiceDirectory().add(AclService.class, mockAclService)
+ ServiceDirectory testDirectory = new TestServiceDirectory()
+ .add(AclService.class, mockAclService)
.add(AclStore.class, mockAclStore);
BaseResource.setServiceDirectory(testDirectory);
@@ -79,64 +90,62 @@
}
}
- @Override
- public AppDescriptor configure() {
- return new WebAppDescriptor.Builder("org.onosproject.acl").build();
- }
-
@Test
@Ignore("FIXME: This needs to get reworked")
public void addRule() throws IOException {
- WebResource.Builder rs = resource().path("rules").header("Content-type", "application/json");
+ WebTarget wt = target();
String response;
String json;
replay(mockAclService);
+ // FIXME: following code snippet requires refactoring by extracting
+ // json string as a separated file
+
// input a invalid JSON string that contains neither nw_src and nw_dst
json = "{\"ipProto\":\"TCP\",\"dstTpPort\":\"80\"}";
- response = rs.post(String.class, json);
+ response = wt.request().post(Entity.json(json), String.class);
assertThat(response, containsString("Failed! Either srcIp or dstIp must be assigned."));
// input a invalid JSON string that doesn't contain CIDR mask bits
json = "{\"ipProto\":\"TCP\",\"srcIp\":\"10.0.0.1\",\"dstTpPort\":\"80\",\"action\":\"DENY\"}";
- response = rs.post(String.class, json);
+ response = wt.request().post(Entity.json(json), String.class);
assertThat(response, containsString("Malformed IPv4 prefix string: 10.0.0.1. " +
"Address must take form \"x.x.x.x/y\""));
// input a invalid JSON string that contains a invalid IP address
json = "{\"ipProto\":\"TCP\",\"srcIp\":\"10.0.0.256/32\",\"dstTpPort\":\"80\",\"action\":\"DENY\"}";
- response = rs.post(String.class, json);
+ response = wt.request().post(Entity.json(json), String.class);
assertThat(response, containsString("Invalid IP address string: 10.0.0.256"));
// input a invalid JSON string that contains a invalid IP address
json = "{\"ipProto\":\"TCP\",\"srcIp\":\"10.0.01/32\",\"dstTpPort\":\"80\",\"action\":\"DENY\"}";
- response = rs.post(String.class, json);
+ response = wt.request().post(Entity.json(json), String.class);
assertThat(response, containsString("Invalid IP address string: 10.0.01"));
// input a invalid JSON string that contains a invalid CIDR mask bits
json = "{\"ipProto\":\"TCP\",\"srcIp\":\"10.0.0.1/a\",\"dstTpPort\":\"80\",\"action\":\"DENY\"}";
- response = rs.post(String.class, json);
+ response = wt.request().post(Entity.json(json), String.class);
assertThat(response, containsString("Failed! For input string: \"a\""));
// input a invalid JSON string that contains a invalid CIDR mask bits
json = "{\"ipProto\":\"TCP\",\"srcIp\":\"10.0.0.1/33\",\"dstTpPort\":\"80\",\"action\":\"DENY\"}";
- response = rs.post(String.class, json);
+ response = wt.request().post(Entity.json(json), String.class);
assertThat(response, containsString("Invalid prefix length 33. The value must be in the interval [0, 32]"));
// input a invalid JSON string that contains a invalid ipProto value
json = "{\"ipProto\":\"ARP\",\"srcIp\":\"10.0.0.1/32\",\"dstTpPort\":\"80\",\"action\":\"DENY\"}";
- response = rs.post(String.class, json);
+ response = wt.request().post(Entity.json(json), String.class);
assertThat(response, containsString("ipProto must be assigned to TCP, UDP, or ICMP."));
// input a invalid JSON string that contains a invalid dstTpPort value
json = "{\"ipProto\":\"TCP\",\"srcIp\":\"10.0.0.1/32\",\"dstTpPort\":\"a\",\"action\":\"DENY\"}";
- response = rs.post(String.class, json);
+ response = wt.request().post(Entity.json(json), String.class);
assertThat(response, containsString("dstTpPort must be assigned to a numerical value."));
// input a invalid JSON string that contains a invalid action value
json = "{\"ipProto\":\"TCP\",\"srcIp\":\"10.0.0.1/32\",\"dstTpPort\":\"80\",\"action\":\"PERMIT\"}";
- response = rs.post(String.class, json);
+ response = wt.request().post(Entity.json(json), String.class);
assertThat(response, containsString("action must be assigned to ALLOW or DENY."));
}
}