summaryrefslogtreecommitdiffstats
path: root/pomba/network-discovery/src/test
diff options
context:
space:
mode:
authorBrad Benesch <brad.benesch@amdocs.com>2018-07-12 14:26:26 -0400
committerBrad Benesch <brad.benesch@amdocs.com>2018-07-23 15:02:36 -0400
commit92c73de0f57aee2ada5f5c85b960c4c8ce7adf85 (patch)
tree66038237e070b13a82b1ceb7e7b0d98ba15fe576 /pomba/network-discovery/src/test
parent17ac3b089df1cc33ced623ab4150edcacd4381c6 (diff)
Initial code for network discovery microservice
Issue-ID: SDNC-317 Change-Id: I09d44de02283079471de0084da07793cb3d7820c Signed-off-by: Brad Benesch <brad.benesch@amdocs.com>
Diffstat (limited to 'pomba/network-discovery/src/test')
-rw-r--r--pomba/network-discovery/src/test/java/org/onap/sdnc/apps/pomba/networkdiscovery/unittest/service/NetworkDiscoveryTest.java316
-rw-r--r--pomba/network-discovery/src/test/java/org/onap/sdnc/apps/pomba/networkdiscovery/unittest/service/TestHttpServletRequest.java499
2 files changed, 815 insertions, 0 deletions
diff --git a/pomba/network-discovery/src/test/java/org/onap/sdnc/apps/pomba/networkdiscovery/unittest/service/NetworkDiscoveryTest.java b/pomba/network-discovery/src/test/java/org/onap/sdnc/apps/pomba/networkdiscovery/unittest/service/NetworkDiscoveryTest.java
new file mode 100644
index 0000000..f908dfd
--- /dev/null
+++ b/pomba/network-discovery/src/test/java/org/onap/sdnc/apps/pomba/networkdiscovery/unittest/service/NetworkDiscoveryTest.java
@@ -0,0 +1,316 @@
+/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2018 Amdocs
+ * ============================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=====================================================
+ */
+
+package org.onap.sdnc.apps.pomba.networkdiscovery.unittest.service;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.ok;
+import static com.github.tomakehurst.wiremock.client.WireMock.okTextXml;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+import com.github.tomakehurst.wiremock.stubbing.ServeEvent;
+import com.github.tomakehurst.wiremock.verification.LoggedRequest;
+import java.net.URISyntaxException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Base64;
+import java.util.List;
+import java.util.UUID;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.onap.sdnc.apps.pomba.networkdiscovery.datamodel.Attribute;
+import org.onap.sdnc.apps.pomba.networkdiscovery.datamodel.DataQuality;
+import org.onap.sdnc.apps.pomba.networkdiscovery.datamodel.NetworkDiscoveryNotification;
+import org.onap.sdnc.apps.pomba.networkdiscovery.datamodel.NetworkDiscoveryResponse;
+import org.onap.sdnc.apps.pomba.networkdiscovery.datamodel.Resource;
+import org.onap.sdnc.apps.pomba.networkdiscovery.service.rs.RestService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.core.env.Environment;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
+@WebAppConfiguration
+@SpringBootTest
+@TestPropertySource(properties = {
+ "enricher.url=http://localhost:9505",
+ "basicAuth.username=admin",
+ "basicAuth.password=admin"
+})
+public class NetworkDiscoveryTest {
+ private static final String V1 = "v1";
+ private static final String APP = "junit";
+
+ private static final String RESOURCE_TYPE_VSERVER = "vserver";
+ private static final String CALLBACK_PATH = "/callback";
+
+ private static final String AUTH = "Basic " + Base64.getEncoder().encodeToString("admin:admin".getBytes());
+ @Autowired
+ private Environment environment;
+
+ @Rule
+ public WireMockRule enricherRule = new WireMockRule(wireMockConfig().port(9505));
+
+ @Rule
+ public WireMockRule callbackRule = new WireMockRule(wireMockConfig().dynamicPort());
+
+ @Autowired
+ private RestService service;
+
+ private String transactionId = UUID.randomUUID().toString();
+ private String requestId = UUID.randomUUID().toString();
+ private HttpServletRequest httpRequest = new TestHttpServletRequest();
+
+ public NetworkDiscoveryTest() throws URISyntaxException {
+
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public void testNoAuthHeader() throws Exception {
+ // no Authorization header
+ List<String> resourceIds = Arrays.asList(UUID.randomUUID().toString());
+ Response response = this.service.findbyResourceIdAndType(this.httpRequest, V1, null, APP, this.transactionId,
+ this.requestId, RESOURCE_TYPE_VSERVER, resourceIds, getCallbackUrl());
+ assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
+ // should get WWW-Authenticate header in response
+ assertTrue(response.getHeaderString(HttpHeaders.WWW_AUTHENTICATE).startsWith("Basic realm"));
+ }
+
+ @Test
+ public void testUnauthorized() throws Exception {
+ String authorization = "Basic " + Base64.getEncoder().encodeToString("aaa:bbb".getBytes());
+ // bad Authorization header
+ List<String> resourceIds = Arrays.asList(UUID.randomUUID().toString());
+ Response response = this.service.findbyResourceIdAndType(this.httpRequest, V1, authorization, APP, this.transactionId,
+ this.requestId, RESOURCE_TYPE_VSERVER, resourceIds, getCallbackUrl());
+ assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
+ // should not get WWW-Authenticate header in response
+ assertNull(response.getHeaderString(HttpHeaders.WWW_AUTHENTICATE));
+ }
+
+ @Test
+ public void testVerifyAppId() throws Exception {
+ // no X-FromAppId header
+ List<String> resourceIds = Arrays.asList(UUID.randomUUID().toString());
+ Response response = this.service.findbyResourceIdAndType(this.httpRequest, V1, AUTH, null, this.transactionId,
+ this.requestId, RESOURCE_TYPE_VSERVER, resourceIds, getCallbackUrl());
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ assertTrue(((String)response.getEntity()).contains(ONAPLogConstants.Headers.PARTNER_NAME));
+ }
+
+ @Test
+ public void testVerifyRequestId() throws Exception {
+ // no X-FromAppId header
+ List<String> resourceIds = Arrays.asList(UUID.randomUUID().toString());
+ Response response = this.service.findbyResourceIdAndType(this.httpRequest, V1, AUTH, APP, this.transactionId,
+ null, RESOURCE_TYPE_VSERVER, resourceIds, getCallbackUrl());
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ assertTrue(((String)response.getEntity()).contains("requestId"));
+ }
+
+ @Test
+ public void testVerifyNotificationUrl() throws Exception {
+ // no X-FromAppId header
+ List<String> resourceIds = Arrays.asList(UUID.randomUUID().toString());
+ Response response = this.service.findbyResourceIdAndType(this.httpRequest, V1, AUTH, APP, this.transactionId,
+ this.requestId, RESOURCE_TYPE_VSERVER, resourceIds, null);
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ assertTrue(((String)response.getEntity()).contains("notificationURL"));
+ }
+
+ @Test
+ public void testVerifyResourceIds() throws Exception {
+ // no resourceIds list
+ {
+ List<String> resourceIds = null;
+ Response response = this.service.findbyResourceIdAndType(this.httpRequest, V1, AUTH, APP, this.transactionId,
+ this.requestId, RESOURCE_TYPE_VSERVER, resourceIds, getCallbackUrl());
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ assertTrue(((String)response.getEntity()).contains("resourceIds"));
+ }
+
+ // empty resourceId list
+ {
+ List<String> resourceIds = new ArrayList<>();
+ Response response = this.service.findbyResourceIdAndType(this.httpRequest, V1, AUTH, APP, this.transactionId,
+ this.requestId, RESOURCE_TYPE_VSERVER, resourceIds, getCallbackUrl());
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ assertTrue(((String)response.getEntity()).contains("resourceIds"));
+ }
+ }
+
+
+ @Test
+ public void testVerifyResourceType() throws Exception {
+ // no resource type
+ List<String> resourceIds = Arrays.asList(UUID.randomUUID().toString());
+ Response response = this.service.findbyResourceIdAndType(this.httpRequest, V1, AUTH, APP, this.transactionId,
+ this.requestId, null, resourceIds, getCallbackUrl());
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ assertTrue(((String)response.getEntity()).contains("resourceType"));
+ }
+
+ @Test
+ public void testDiscoverVserver() throws Exception {
+ String vserverId = UUID.randomUUID().toString();
+
+ String resourcePath = MessageFormat.format(
+ this.environment.getProperty("enricher.type.vserver.url"),
+ new Object[] { vserverId });
+
+ String enricherPayload = String.format(
+ "<vserver xmlns=\"http://org.onap.aai.inventory/v11\">\r\n"
+ + " <vserver-id>%s</vserver-id>\r\n"
+ + " <power-state>1</power-state>\r\n"
+ + " <vm-state>active</vm-state>\r\n"
+ + " <status>ACTIVE</status>\r\n"
+ + " <host-status>UNKNOWN</host-status>\r\n"
+ + " <updated>2017-11-20T04:26:13Z</updated>\r\n"
+ + " <disk-allocation-gb>.010</disk-allocation-gb>\r\n"
+ + " <memory-usage-mb>null</memory-usage-mb>\r\n"
+ + " <cpu-util-percent>.043</cpu-util-percent>\r\n"
+ + " <retrieval-timestamp>2018-06-27 19:41:49 +0000</retrieval-timestamp>\r\n"
+ + "</vserver>", vserverId);
+
+ this.enricherRule.stubFor(get(resourcePath).willReturn(okTextXml(enricherPayload)));
+
+ this.callbackRule.stubFor(post(CALLBACK_PATH).willReturn(ok("Acknowledged")));
+
+ Response response = this.service.findbyResourceIdAndType(this.httpRequest, V1, AUTH, APP, null, this.requestId,
+ RESOURCE_TYPE_VSERVER, Arrays.asList(vserverId), getCallbackUrl());
+
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+ NetworkDiscoveryResponse entity = (NetworkDiscoveryResponse) response.getEntity();
+ assertEquals(requestId, entity.getRequestId());
+ assertEquals(Status.ACCEPTED.getStatusCode(), entity.getCode().intValue());
+ assertEquals(Boolean.FALSE, entity.getAckFinalIndicator());
+
+ List<ServeEvent> events = waitForRequests(this.callbackRule, 1, 10);
+ LoggedRequest notificationRequest = events.get(0).getRequest();
+ assertEquals(AUTH, notificationRequest.getHeader(HttpHeaders.AUTHORIZATION));
+ String notificationJson = notificationRequest.getBodyAsString();
+
+ ObjectMapper mapper = new ObjectMapper();
+ AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(TypeFactory.defaultInstance());
+ mapper.setAnnotationIntrospector(introspector);
+ NetworkDiscoveryNotification notification =
+ mapper.readValue(notificationJson, NetworkDiscoveryNotification.class);
+
+ assertEquals(requestId, notification.getRequestId());
+ assertEquals(Status.OK.getStatusCode(), notification.getCode().intValue());
+ assertEquals(Boolean.TRUE, notification.getAckFinalIndicator());
+
+ assertEquals(1, notification.getResources().size());
+ Resource vserver = notification.getResources().get(0);
+ assertEquals(vserverId, vserver.getId());
+ assertEquals("vserver", vserver.getType());
+ assertEquals(DataQuality.Status.ok, vserver.getDataQuality().getStatus());
+
+ verifyAttribute(vserver.getAttributeList(), "power-state", "1");
+ verifyAttribute(vserver.getAttributeList(), "vm-state", "active");
+ verifyAttribute(vserver.getAttributeList(), "status", "ACTIVE");
+ verifyAttribute(vserver.getAttributeList(), "host-status", "UNKNOWN");
+ verifyAttribute(vserver.getAttributeList(), "updated", "2017-11-20T04:26:13Z");
+ verifyAttribute(vserver.getAttributeList(), "disk-allocation-gb", ".010");
+ verifyAttribute(vserver.getAttributeList(), "memory-usage-mb", "null");
+ verifyAttribute(vserver.getAttributeList(), "cpu-util-percent", ".043");
+ verifyAttribute(vserver.getAttributeList(), "retrieval-timestamp", "2018-06-27 19:41:49 +0000");
+ }
+
+ /**
+ * Verify API returns a final response indicating no discovery possible.
+ */
+ @Test
+ public void testUnsupportedResourceType() throws Exception {
+
+ String resourceType = "unsupported";
+ List<String> resourceIds = Arrays.asList("dummyId");
+ Response response = this.service.findbyResourceIdAndType(this.httpRequest, V1, AUTH, APP, this.transactionId,
+ this.requestId, resourceType, resourceIds, getCallbackUrl());
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+
+ NetworkDiscoveryResponse entity = (NetworkDiscoveryResponse) response.getEntity();
+ assertEquals(Boolean.TRUE, entity.getAckFinalIndicator());
+ assertEquals(Status.NO_CONTENT.getStatusCode(), entity.getCode().intValue());
+ }
+
+ private void verifyAttribute(List<Attribute> attributeList, String attrName, String attrValue) {
+ for (Attribute attr : attributeList) {
+ if (attr.getName().equals(attrName)) {
+ assertEquals("Unexpected value for attribute " + attrName, attrValue, attr.getValue());
+ return;
+ }
+ }
+ fail("Attribute " + attrName + " not found");
+ }
+
+ private List<ServeEvent> waitForRequests(WireMockRule service, int minRequests, long timeoutSeconds)
+ throws InterruptedException {
+
+ long remaining = timeoutSeconds * 1000L;
+ long retryInterval = Math.min(remaining / 5, 1000);
+ while (true) {
+ List<ServeEvent> events = service.getAllServeEvents();
+ if (events.size() >= minRequests) {
+ return events;
+ }
+ if (remaining <= 0) {
+ fail("Timeout waiting for " + minRequests + " requests");
+ }
+ Thread.sleep(retryInterval);
+ remaining -= retryInterval;
+ }
+ }
+
+ private String getCallbackUrl() {
+ return "http://localhost:" + this.callbackRule.port() + CALLBACK_PATH;
+ }
+}
diff --git a/pomba/network-discovery/src/test/java/org/onap/sdnc/apps/pomba/networkdiscovery/unittest/service/TestHttpServletRequest.java b/pomba/network-discovery/src/test/java/org/onap/sdnc/apps/pomba/networkdiscovery/unittest/service/TestHttpServletRequest.java
new file mode 100644
index 0000000..b9af503
--- /dev/null
+++ b/pomba/network-discovery/src/test/java/org/onap/sdnc/apps/pomba/networkdiscovery/unittest/service/TestHttpServletRequest.java
@@ -0,0 +1,499 @@
+/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2018 Amdocs
+ * ============================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=====================================================
+ */
+package org.onap.sdnc.apps.pomba.networkdiscovery.unittest.service;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.Principal;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.Map;
+import javax.servlet.AsyncContext;
+import javax.servlet.DispatcherType;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpUpgradeHandler;
+import javax.servlet.http.Part;
+
+public class TestHttpServletRequest implements HttpServletRequest {
+ @Override
+ public String getHeader(String name) {
+ return null;
+ }
+
+ @Override
+ public String getRemoteAddr() {
+ return "localhost";
+ }
+
+ @Override
+ public String getServerName() {
+ return "localhost";
+ }
+
+ @Override
+ public String getRequestURI() {
+ return "/test";
+ }
+
+
+ @Override
+ public Object getAttribute(String name) {
+ // TODO Implement getAttribute
+ throw new UnsupportedOperationException("getAttribute");
+ }
+
+ @Override
+ public Enumeration<String> getAttributeNames() {
+ // TODO Implement getAttributeNames
+ throw new UnsupportedOperationException("getAttributeNames");
+ }
+
+ @Override
+ public String getCharacterEncoding() {
+ // TODO Implement getCharacterEncoding
+ throw new UnsupportedOperationException("getCharacterEncoding");
+ }
+
+ @Override
+ public void setCharacterEncoding(String env) throws UnsupportedEncodingException {
+ // TODO Implement setCharacterEncoding
+ throw new UnsupportedOperationException("setCharacterEncoding");
+ }
+
+ @Override
+ public int getContentLength() {
+ // TODO Implement getContentLength
+ throw new UnsupportedOperationException("getContentLength");
+ }
+
+ @Override
+ public long getContentLengthLong() {
+ // TODO Implement getContentLengthLong
+ throw new UnsupportedOperationException("getContentLengthLong");
+ }
+
+ @Override
+ public String getContentType() {
+ // TODO Implement getContentType
+ throw new UnsupportedOperationException("getContentType");
+ }
+
+ @Override
+ public ServletInputStream getInputStream() throws IOException {
+ // TODO Implement getInputStream
+ throw new UnsupportedOperationException("getInputStream");
+ }
+
+ @Override
+ public String getParameter(String name) {
+ // TODO Implement getParameter
+ throw new UnsupportedOperationException("getParameter");
+ }
+
+ @Override
+ public Enumeration<String> getParameterNames() {
+ // TODO Implement getParameterNames
+ throw new UnsupportedOperationException("getParameterNames");
+ }
+
+ @Override
+ public String[] getParameterValues(String name) {
+ // TODO Implement getParameterValues
+ throw new UnsupportedOperationException("getParameterValues");
+ }
+
+ @Override
+ public Map<String, String[]> getParameterMap() {
+ // TODO Implement getParameterMap
+ throw new UnsupportedOperationException("getParameterMap");
+ }
+
+ @Override
+ public String getProtocol() {
+ // TODO Implement getProtocol
+ throw new UnsupportedOperationException("getProtocol");
+ }
+
+ @Override
+ public String getScheme() {
+ // TODO Implement getScheme
+ throw new UnsupportedOperationException("getScheme");
+ }
+
+ @Override
+ public int getServerPort() {
+ // TODO Implement getServerPort
+ throw new UnsupportedOperationException("getServerPort");
+ }
+
+ @Override
+ public BufferedReader getReader() throws IOException {
+ // TODO Implement getReader
+ throw new UnsupportedOperationException("getReader");
+ }
+
+ @Override
+ public String getRemoteHost() {
+ // TODO Implement getRemoteHost
+ throw new UnsupportedOperationException("getRemoteHost");
+ }
+
+ @Override
+ public void setAttribute(String name, Object obj) {
+ // TODO Implement setAttribute
+ throw new UnsupportedOperationException("setAttribute");
+ }
+
+ @Override
+ public void removeAttribute(String name) {
+ // TODO Implement removeAttribute
+ throw new UnsupportedOperationException("removeAttribute");
+ }
+
+ @Override
+ public Locale getLocale() {
+ // TODO Implement getLocale
+ throw new UnsupportedOperationException("getLocale");
+ }
+
+ @Override
+ public Enumeration<Locale> getLocales() {
+ // TODO Implement getLocales
+ throw new UnsupportedOperationException("getLocales");
+ }
+
+ @Override
+ public boolean isSecure() {
+ // TODO Implement isSecure
+ throw new UnsupportedOperationException("isSecure");
+ }
+
+ @Override
+ public RequestDispatcher getRequestDispatcher(String path) {
+ // TODO Implement getRequestDispatcher
+ throw new UnsupportedOperationException("getRequestDispatcher");
+ }
+
+ @Override
+ public String getRealPath(String path) {
+ // TODO Implement getRealPath
+ throw new UnsupportedOperationException("getRealPath");
+ }
+
+ @Override
+ public int getRemotePort() {
+ // TODO Implement getRemotePort
+ throw new UnsupportedOperationException("getRemotePort");
+ }
+
+ @Override
+ public String getLocalName() {
+ // TODO Implement getLocalName
+ throw new UnsupportedOperationException("getLocalName");
+ }
+
+ @Override
+ public String getLocalAddr() {
+ // TODO Implement getLocalAddr
+ throw new UnsupportedOperationException("getLocalAddr");
+ }
+
+ @Override
+ public int getLocalPort() {
+ // TODO Implement getLocalPort
+ throw new UnsupportedOperationException("getLocalPort");
+ }
+
+ @Override
+ public ServletContext getServletContext() {
+ // TODO Implement getServletContext
+ throw new UnsupportedOperationException("getServletContext");
+ }
+
+ @Override
+ public AsyncContext startAsync() throws IllegalStateException {
+ // TODO Implement startAsync
+ throw new UnsupportedOperationException("startAsync");
+ }
+
+ @Override
+ public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse)
+ throws IllegalStateException {
+ // TODO Implement startAsync
+ throw new UnsupportedOperationException("startAsync");
+ }
+
+ @Override
+ public boolean isAsyncStarted() {
+ // TODO Implement isAsyncStarted
+ throw new UnsupportedOperationException("isAsyncStarted");
+ }
+
+ @Override
+ public boolean isAsyncSupported() {
+ // TODO Implement isAsyncSupported
+ throw new UnsupportedOperationException("isAsyncSupported");
+ }
+
+ @Override
+ public AsyncContext getAsyncContext() {
+ // TODO Implement getAsyncContext
+ throw new UnsupportedOperationException("getAsyncContext");
+ }
+
+ @Override
+ public DispatcherType getDispatcherType() {
+ // TODO Implement getDispatcherType
+ throw new UnsupportedOperationException("getDispatcherType");
+ }
+
+ @Override
+ public String getAuthType() {
+ // TODO Implement getAuthType
+ throw new UnsupportedOperationException("getAuthType");
+ }
+
+ @Override
+ public Cookie[] getCookies() {
+ // TODO Implement getCookies
+ throw new UnsupportedOperationException("getCookies");
+ }
+
+ @Override
+ public long getDateHeader(String name) {
+ // TODO Implement getDateHeader
+ throw new UnsupportedOperationException("getDateHeader");
+ }
+
+ @Override
+ public Enumeration<String> getHeaders(String name) {
+ // TODO Implement getHeaders
+ throw new UnsupportedOperationException("getHeaders");
+ }
+
+ @Override
+ public Enumeration<String> getHeaderNames() {
+ // TODO Implement getHeaderNames
+ throw new UnsupportedOperationException("getHeaderNames");
+ }
+
+ @Override
+ public int getIntHeader(String name) {
+ // TODO Implement getIntHeader
+ throw new UnsupportedOperationException("getIntHeader");
+ }
+
+ @Override
+ public String getMethod() {
+ // TODO Implement getMethod
+ throw new UnsupportedOperationException("getMethod");
+ }
+
+ @Override
+ public String getPathInfo() {
+ // TODO Implement getPathInfo
+ throw new UnsupportedOperationException("getPathInfo");
+ }
+
+ @Override
+ public String getPathTranslated() {
+ // TODO Implement getPathTranslated
+ throw new UnsupportedOperationException("getPathTranslated");
+ }
+
+ @Override
+ public String getContextPath() {
+ // TODO Implement getContextPath
+ throw new UnsupportedOperationException("getContextPath");
+ }
+
+ @Override
+ public String getQueryString() {
+ // TODO Implement getQueryString
+ throw new UnsupportedOperationException("getQueryString");
+ }
+
+ @Override
+ public String getRemoteUser() {
+ // TODO Implement getRemoteUser
+ throw new UnsupportedOperationException("getRemoteUser");
+ }
+
+ @Override
+ public boolean isUserInRole(String role) {
+ // TODO Implement isUserInRole
+ throw new UnsupportedOperationException("isUserInRole");
+ }
+
+ @Override
+ public Principal getUserPrincipal() {
+ // TODO Implement getUserPrincipal
+ throw new UnsupportedOperationException("getUserPrincipal");
+ }
+
+ @Override
+ public String getRequestedSessionId() {
+ // TODO Implement getRequestedSessionId
+ throw new UnsupportedOperationException("getRequestedSessionId");
+ }
+
+ @Override
+ public StringBuffer getRequestURL() {
+ // TODO Implement getRequestURL
+ throw new UnsupportedOperationException("getRequestURL");
+ }
+
+ @Override
+ public String getServletPath() {
+ // TODO Implement getServletPath
+ throw new UnsupportedOperationException("getServletPath");
+ }
+
+ @Override
+ public HttpSession getSession(boolean create) {
+ // TODO Implement getSession
+ throw new UnsupportedOperationException("getSession");
+ }
+
+ @Override
+ public HttpSession getSession() {
+ // TODO Implement getSession
+ throw new UnsupportedOperationException("getSession");
+ }
+
+ @Override
+ public String changeSessionId() {
+ // TODO Implement changeSessionId
+ throw new UnsupportedOperationException("changeSessionId");
+ }
+
+ @Override
+ public boolean isRequestedSessionIdValid() {
+ // TODO Implement isRequestedSessionIdValid
+ throw new UnsupportedOperationException("isRequestedSessionIdValid");
+ }
+
+ @Override
+ public boolean isRequestedSessionIdFromCookie() {
+ // TODO Implement isRequestedSessionIdFromCookie
+ throw new UnsupportedOperationException("isRequestedSessionIdFromCookie");
+ }
+
+ @Override
+ public boolean isRequestedSessionIdFromURL() {
+ // TODO Implement isRequestedSessionIdFromURL
+ throw new UnsupportedOperationException("isRequestedSessionIdFromURL");
+ }
+
+ @Override
+ public boolean isRequestedSessionIdFromUrl() {
+ // TODO Implement isRequestedSessionIdFromUrl
+ throw new UnsupportedOperationException("isRequestedSessionIdFromUrl");
+ }
+
+ @Override
+ public boolean authenticate(HttpServletResponse response) throws IOException, ServletException {
+ // TODO Implement authenticate
+ throw new UnsupportedOperationException("authenticate");
+ }
+
+ @Override
+ public void login(String username, String password) throws ServletException {
+ // TODO Implement login
+ throw new UnsupportedOperationException("login");
+ }
+
+ @Override
+ public void logout() throws ServletException {
+ // TODO Implement logout
+ throw new UnsupportedOperationException("logout");
+ }
+
+ @Override
+ public Collection<Part> getParts() throws IOException, ServletException {
+ // TODO Implement getParts
+ throw new UnsupportedOperationException("getParts");
+ }
+
+ @Override
+ public Part getPart(String name) throws IOException, ServletException {
+ // TODO Implement getPart
+ throw new UnsupportedOperationException("getPart");
+ }
+
+ @Override
+ public <T extends HttpUpgradeHandler> T upgrade(Class<T> httpUpgradeHandlerClass)
+ throws IOException, ServletException {
+ // TODO Implement upgrade
+ throw new UnsupportedOperationException("upgrade");
+ }
+ /////////////////////////////////////////////////////////////////////////////
+ // Constants
+ /////////////////////////////////////////////////////////////////////////////
+
+ /////////////////////////////////////////////////////////////////////////////
+ // Class variables
+ /////////////////////////////////////////////////////////////////////////////
+
+ /////////////////////////////////////////////////////////////////////////////
+ // Instance variables
+ /////////////////////////////////////////////////////////////////////////////
+
+ /////////////////////////////////////////////////////////////////////////////
+ // Constructors
+ /////////////////////////////////////////////////////////////////////////////
+
+ /////////////////////////////////////////////////////////////////////////////
+ // Public methods
+ /////////////////////////////////////////////////////////////////////////////
+
+ /////////////////////////////////////////////////////////////////////////////
+ // [interface name] implementation
+ /////////////////////////////////////////////////////////////////////////////
+
+ /////////////////////////////////////////////////////////////////////////////
+ // [super class] override methods
+ /////////////////////////////////////////////////////////////////////////////
+
+ /////////////////////////////////////////////////////////////////////////////
+ // Package protected methods
+ /////////////////////////////////////////////////////////////////////////////
+
+ /////////////////////////////////////////////////////////////////////////////
+ // Protected methods
+ /////////////////////////////////////////////////////////////////////////////
+
+ /////////////////////////////////////////////////////////////////////////////
+ // Private methods
+ /////////////////////////////////////////////////////////////////////////////
+
+ /////////////////////////////////////////////////////////////////////////////
+ // Inner classes
+ /////////////////////////////////////////////////////////////////////////////
+}