+ bridge waits for user request.

pull/1/head
Ivan Olexyn 5 years ago
parent d133e8ed76
commit 0c0d10f72a

@ -6,15 +6,16 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class BridgeServlet extends HttpServlet { public class BridgeServlet extends HttpServlet {
protected static final String MISP_CLIENT_URL = "http://localhost:9090/mispclient/core"; protected static final String MISP_CLIENT_URL = "http://localhost:9090/mispclient/core";
public List<Ride> availableRides = new ArrayList<>(); public Map<Long, Ride> rideMap = new HashMap<>();
public List<Ride> bookedRides = new ArrayList<>(); protected RideMapHelper mapHelper = new RideMapHelper(rideMap);
protected List<Ride> loadedRides = new ArrayList<>();
// ####### // #######
// //
@ -40,7 +41,13 @@ public class BridgeServlet extends HttpServlet {
boolean hasData = ridePayload.getData() != null; boolean hasData = ridePayload.getData() != null;
if (hasReqeust && hasData) { if (hasReqeust && hasData) {
Thread handleGetRideRequestDataThread = new Thread(() -> handleGetRideRequestData(request, response)); Thread handleGetRideRequestDataThread = new Thread(() -> {
try {
handleGetRideRequestData(request, response);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
});
handleGetRideRequestDataThread.start(); handleGetRideRequestDataThread.start();
} }
} }

@ -1,7 +1,3 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
import javax.servlet.ServletException; import javax.servlet.ServletException;
@ -9,8 +5,10 @@ import javax.servlet.http.HttpServlet;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.util.ArrayList; import java.util.HashMap;
import java.util.List; import java.util.Map;
public class ClientServlet extends HttpServlet { public class ClientServlet extends HttpServlet {
@ -20,9 +18,10 @@ public class ClientServlet extends HttpServlet {
public static final int AVAILABLE_RIDES_OVERHEAD = 1; public static final int AVAILABLE_RIDES_OVERHEAD = 1;
public List<Ride> availableRides = new ArrayList<>();
public List<Ride> bookedRides = new ArrayList<>();
public List<Ride> loadedRides = new ArrayList<>(); public Map<Long, Ride> rideMap = new HashMap<>();
protected RideMapHelper mapHelper = new RideMapHelper(rideMap);
public ClientServlet() { public ClientServlet() {
@ -37,15 +36,16 @@ public class ClientServlet extends HttpServlet {
* # send POST (Ride) * # send POST (Ride)
* Generated by Loop * Generated by Loop
*/ */
void sendPostRide(Ride oldRide) throws IOException, ServletException, InterruptedException { void sendPostRide(Ride ride) throws IOException, ServletException, InterruptedException {
HttpURLConnection connection = ConnectionHelper.make("POST", MISP_BRIDGE_URL); HttpURLConnection connection = ConnectionHelper.make("POST", MISP_BRIDGE_URL);
// send POST (Ride) // send POST (Ride)
availableRides.add(oldRide);
rideMap.put(ride.getID(), ride.setState(State.AVAILABLE));
connection.setDoOutput(true); connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(oldRide.json()); outputStream.writeBytes(ride.json());
outputStream.flush(); outputStream.flush();
outputStream.close(); outputStream.close();
@ -54,9 +54,8 @@ public class ClientServlet extends HttpServlet {
// add Ride to ReservedRides // add Ride to ReservedRides
if (connection.getResponseCode() == 200) { if (connection.getResponseCode() == 200) {
Ride parsedRide = ConnectionHelper.parseRide(connection); Ride parsedRide = ConnectionHelper.parseRide(connection);
if (parsedRide.equals(oldRide)) { if (parsedRide.equals(ride)) {
availableRides.remove(oldRide); ride.setState(State.BOOKED);
bookedRides.add(parsedRide);
} }
} }
} }
@ -66,7 +65,7 @@ public class ClientServlet extends HttpServlet {
/** /**
* # send GET (Request) to App * # send GET (Request) to App
*/ */
void sendGetRequest(Ride oldRide) throws IOException { void sendGetRequest(Ride ride) throws IOException {
// send FOO // send FOO
// TODO make sure as many as possible tyes of requests can be forwarded. // TODO make sure as many as possible tyes of requests can be forwarded.
@ -76,11 +75,9 @@ public class ClientServlet extends HttpServlet {
// add Ride to PendingData // add Ride to PendingData
// send GET (Ride)(Data) // send GET (Ride)(Data)
String data = "DATA"; String data = "DATA";
bookedRides.remove(oldRide); ride.setData(data);
Ride newRide = oldRide; ride.setState(State.LOADED);
newRide.setData(data); sendGetRideRequestData(ride);
loadedRides.add(newRide);
sendGetRideRequestData(newRide);
} }
@ -99,13 +96,11 @@ public class ClientServlet extends HttpServlet {
outputStream.flush(); outputStream.flush();
outputStream.close(); outputStream.close();
// handle OK (EOL) // handle OK (RIDE)
// remove Ride from PendingData
// add Ride to EOl
if (connection.getResponseCode() == 200) { if (connection.getResponseCode() == 200) {
Ride shellIdRide = ConnectionHelper.parseRide(connection); Ride shellIdRide = ConnectionHelper.parseRide(connection);
if (shellIdRide.getRideID() != null) { if (shellIdRide.getID() != null) {
loadedRides.remove(oldRide); rideMap.remove(oldRide.getID());
} }
} }
} }
@ -130,7 +125,17 @@ class PostRideRunnable implements Runnable {
@Override @Override
public void run() { public void run() {
while (true) { while (true) {
if (clientServlet.availableRides.size() < ClientServlet.AVAILABLE_RIDES_OVERHEAD) {
long availableRides = 0L;
for (Map.Entry<Long,Ride> entry : clientServlet.rideMap.entrySet()){
if (entry.getValue().getState() == State.AVAILABLE){
availableRides++;
}
}
if (availableRides< ClientServlet.AVAILABLE_RIDES_OVERHEAD) {
try {clientServlet.sendPostRide(new Ride());} catch (IOException | ServletException | InterruptedException e) { e.printStackTrace(); } try {clientServlet.sendPostRide(new Ride());} catch (IOException | ServletException | InterruptedException e) { e.printStackTrace(); }
} }
try {Thread.sleep(500);} catch (InterruptedException e) { e.printStackTrace(); } try {Thread.sleep(500);} catch (InterruptedException e) { e.printStackTrace(); }

@ -4,9 +4,10 @@ public class Ride {
private static long count = 0L; private static long count = 0L;
private String rideID; private Long id;
private String request; private String request;
private String data; private String data;
private State state;
// FUTURE it might be possible to use a ride for many requests. // FUTURE it might be possible to use a ride for many requests.
// private List<String> requests = new ArrayList<>(); // private List<String> requests = new ArrayList<>();
@ -14,15 +15,16 @@ public class Ride {
public Ride() { public Ride() {
rideID = "" + count++; id = count++;
} }
public Ride(String json) { public Ride(String json) {
json = json.replace("{", "").replace("}", ""); json = json.replace("{", "").replace("}", "");
String[] split = json.split(","); String[] split = json.split(",");
rideID = split[0].split(":")[1]; String idString = unbrace(split[0].split(":")[1]);
request = split[1].split(":")[1]; id = Long.parseLong(idString);
data = split[2].split(":")[1]; request = unbrace(split[1].split(":")[1]);
data = unbrace(split[2].split(":")[1]);
} }
@ -34,6 +36,9 @@ public class Ride {
this.data = data; this.data = data;
} }
public Ride setState(State state){ this.state = state; return this;}
public String getRequest() { public String getRequest() {
return this.request; return this.request;
} }
@ -42,19 +47,23 @@ public class Ride {
return this.data; return this.data;
} }
public String getRideID() { public Long getID() {
return this.rideID; return this.id;
} }
public State getState(){return this.state;}
private String brace(String foo) { private String brace(String foo) {
return "\"" + foo + "\""; return "\"" + foo + "\"";
} }
private String unbrace(String foo){ return foo.replace("\"",""); }
public String json() { public String json() {
String[] keys = {"rideID", String[] keys = {"rideID",
"request", "request",
"data"}; "data"};
String[] values = {rideID, String[] values = {"" + id,
request, request,
data}; data};
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@ -77,11 +86,17 @@ public class Ride {
if (this == o) return true; if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; if (o == null || getClass() != o.getClass()) return false;
Ride ride = (Ride) o; Ride ride = (Ride) o;
return Objects.equals(rideID, ride.rideID) && Objects.equals(request, ride.request) && Objects.equals(data, ride.data); return Objects.equals(id, ride.id) && Objects.equals(request, ride.request) && Objects.equals(data, ride.data);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(rideID, request, data); return Objects.hash(id, request, data);
} }
} }

@ -0,0 +1,54 @@
import java.util.List;
import java.util.Map;
public class RideMapHelper {
public Map<Long,Ride> rideMap;
RideMapHelper(Map<Long,Ride> rideMap){
this.rideMap = rideMap;
}
public boolean containsMore(int i, State state){
long availableRides = 0L;
for (Map.Entry<Long,Ride> entry : rideMap.entrySet()){
if (entry.getValue().getState() == state){
availableRides++;
}
if (availableRides > i){
return true;
}
}
return false;
}
public boolean containsLess(int i, State state){
long availableRides = 0L;
for (Map.Entry<Long,Ride> entry : rideMap.entrySet()){
if (entry.getValue().getState() == state){
availableRides++;
}
if (availableRides < i){
return true;
}
}
return false;
}
public Ride pickAvailable(){
for (Map.Entry<Long,Ride> entry : rideMap.entrySet()){
if (entry.getValue().getState() == State.AVAILABLE){
return entry.getValue();
}
}
return null;
}
}

@ -0,0 +1,3 @@
public enum State {
AVAILABLE, BOOKED, LOADED
}

@ -1,4 +1,4 @@
import org.mockito.Mockito;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -49,12 +49,12 @@ public abstract class ActorRunnable implements Runnable {
public void processRequests(HttpServletRequest request) throws IOException, ServletException { public void processRequests(HttpServletRequest request) throws IOException, ServletException {
HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
if (request.getMethod().equalsIgnoreCase("GET")) { if (request.getMethod().equalsIgnoreCase("GET")) {
doGet(request, response); doGet(request, null);
} else if (request.getMethod().equalsIgnoreCase("POST")) { } else if (request.getMethod().equalsIgnoreCase("POST")) {
doPost(request, response); doPost(request, null);
} }
} }

@ -1,4 +1,4 @@
import org.mockito.Mockito;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -20,7 +20,7 @@ public class AppMock extends ActorRunnable {
void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
HttpServletResponse mockResponse = Mockito.mock(HttpServletResponse.class);
//Main.clientRunnable.responses.add(mockResponse); //Main.clientRunnable.responses.add(mockResponse);
} }

@ -1,12 +1,14 @@
import exchange.ExchangeMock; import exchange.ExchangeMock;
import exchange.RequestMock; import exchange.RequestMock;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.springframework.mock.web.MockHttpServletRequest;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Map;
public class BridgeMock extends BridgeServlet { public class BridgeMock extends BridgeServlet {
@ -44,13 +46,16 @@ public class BridgeMock extends BridgeServlet {
synchronized (exchange) { synchronized (exchange) {
String parsedRequest = IOUtils.toString(request.getReader()); String parsedRequest = IOUtils.toString(request.getReader());
while (!(availableRides.size() > 0)) { Thread.sleep(100); }
Ride ride = availableRides.remove(0);
while (mapHelper.containsLess(1, State.AVAILABLE)) { Thread.sleep(100); }
Ride ride = mapHelper.pickAvailable();
synchronized (ride) { synchronized (ride) {
ride.setRequest(parsedRequest); ride.setRequest(parsedRequest);
bookedRides.add(ride); ride.setState(State.BOOKED);
while (ride.getData()==null) { while (ride.getData()==null) {
@ -62,8 +67,7 @@ public class BridgeMock extends BridgeServlet {
exchange.response.setStatus(200); exchange.response.setStatus(200);
PrintWriter writer = exchange.response.getWriter(); PrintWriter writer = exchange.response.getWriter();
writer.print(ride.getData()); writer.print(ride.getData());
loadedRides.remove(ride); ride.setState(State.LOADED);
ride.notify(); ride.notify();
} }
exchange.notify(); exchange.notify();
@ -98,21 +102,18 @@ public class BridgeMock extends BridgeServlet {
Ride ride = new Ride(jsonPayload); Ride ride = new Ride(jsonPayload);
synchronized (ride) { synchronized (ride) {
bookedRides.remove(ride); ride.setState(State.LOADED);
while (!bookedRides.contains(ride)) {
ride.notify();
Thread.sleep(100);
ride.wait();
}
exchange.response.setStatus(200); exchange.response.setStatus(200);
PrintWriter writer = response.getWriter(); PrintWriter writer = response.getWriter();
writer.print(ride.json()); writer.print(ride.json());
exchange.notify(); rideMap.remove(ride.getID());
} ride.notify();
}
exchange.notify();
} }
} }
@ -124,6 +125,13 @@ public class BridgeMock extends BridgeServlet {
@Override @Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
super.doPost(request, response); super.doPost(request, response);
// RequestMock mockRequest = (RequestMock) request;
// ExchangeMock exchange = mockRequest.exchange;
// synchronized (exchange) {
// super.doPost(request, response);
// }
} }
@ -144,8 +152,9 @@ public class BridgeMock extends BridgeServlet {
synchronized (ride) { synchronized (ride) {
availableRides.add(ride); rideMap.put(ride.getID(), ride.setState(State.AVAILABLE));
while (!bookedRides.contains(ride)) {
while (ride.getState()==State.AVAILABLE) {
ride.notify(); ride.notify();
Thread.sleep(100); Thread.sleep(100);
ride.wait(); ride.wait();

@ -21,7 +21,8 @@ public class ClientMock extends ClientServlet {
@Override @Override
void sendPostRide(Ride ride) throws IOException, ServletException, InterruptedException { void sendPostRide(Ride ride) throws IOException, ServletException, InterruptedException {
availableRides.add(ride); rideMap.put(ride.getID(), ride.setState(State.AVAILABLE));
// Mock Exchange // Mock Exchange
ExchangeMock exchange = new ExchangeMock(); ExchangeMock exchange = new ExchangeMock();
@ -32,15 +33,14 @@ public class ClientMock extends ClientServlet {
synchronized (exchange){ synchronized (exchange){
// Mock POST (Ride) // Mock POST (Ride)
mockSet.bridgeMock.doPost(exchange.request,exchange.response);
exchange.notify(); exchange.notify();
mockSet.bridgeMock.doPost(exchange.request,exchange.response);
exchange.wait(); exchange.wait();
// handle OK (Ride)(Request) // handle OK (Ride)(Request)
Ride parsedRide = new Ride(exchange.response.getContentAsString()); Ride parsedRide = new Ride(exchange.response.getContentAsString());
ride.setRequest(parsedRide.getRequest()); ride.setRequest(parsedRide.getRequest());
int i = availableRides.indexOf(ride); ride.setState(State.BOOKED);
bookedRides.add(availableRides.remove(i));
sendGetRequest(ride); sendGetRequest(ride);
} }
@ -53,15 +53,14 @@ public class ClientMock extends ClientServlet {
* # send GET (Request) to App * # send GET (Request) to App
*/ */
@Override @Override
void sendGetRequest(Ride oldRide) throws IOException { void sendGetRequest(Ride ride) throws IOException {
HttpURLConnection connection = ConnectionHelper.make("GET", APP_URL); HttpURLConnection connection = ConnectionHelper.make("GET", APP_URL);
// send GET (Request) // send GET (Request)
availableRides.add(oldRide);
connection.setDoOutput(true); connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(oldRide.getRequest()); outputStream.writeBytes(ride.getRequest());
outputStream.flush(); outputStream.flush();
outputStream.close(); outputStream.close();
@ -71,12 +70,11 @@ public class ClientMock extends ClientServlet {
// send GET (Ride)(Data) // send GET (Ride)(Data)
if (connection.getResponseCode() == 200) { if (connection.getResponseCode() == 200) {
String parsedData = ConnectionHelper.parseString(connection); String parsedData = ConnectionHelper.parseString(connection);
oldRide.setData(parsedData); ride.setData(parsedData);
int i = bookedRides.indexOf(oldRide); ride.setState(State.LOADED);
loadedRides.add(bookedRides.remove(i));
} }
sendGetRideRequestData(oldRide); sendGetRideRequestData(ride);
@ -88,23 +86,23 @@ public class ClientMock extends ClientServlet {
* # send GET (Ride)(Request)(Data) * # send GET (Ride)(Request)(Data)
*/ */
@Override @Override
void sendGetRideRequestData(Ride oldRide) throws IOException { void sendGetRideRequestData(Ride ride) throws IOException {
HttpURLConnection connection = ConnectionHelper.make("GET", MISP_BRIDGE_URL); HttpURLConnection connection = ConnectionHelper.make("GET", MISP_BRIDGE_URL);
// send GET (Ride)(Request)(Data) // send GET (Ride)(Request)(Data)
connection.setDoOutput(true); connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(oldRide.json()); outputStream.writeBytes(ride.json());
outputStream.flush(); outputStream.flush();
outputStream.close(); outputStream.close();
// handle OK (EOL) // handle OK (Ride)
// remove Ride from LoadedRides // remove Ride from LoadedRides
if (connection.getResponseCode() == 200) { if (connection.getResponseCode() == 200) {
Ride shellIdRide = ConnectionHelper.parseRide(connection); Ride shellIdRide = ConnectionHelper.parseRide(connection);
if (shellIdRide.getRideID() != null) { if (shellIdRide.getID() != null) {
loadedRides.remove(oldRide); rideMap.remove(ride.getID());
} }
} }
} }

@ -8,7 +8,7 @@ public class Main {
MockSet mockSet = new MockSet(); MockSet mockSet = new MockSet();
Runnable publicRunnable = new PublicMock(mockSet); Runnable publicRunnable = new UserMock(mockSet);
Runnable bridgeRunable = new BridgeRunnable(mockSet); Runnable bridgeRunable = new BridgeRunnable(mockSet);
Runnable clientRunnable = new ClientRunnable(mockSet); Runnable clientRunnable = new ClientRunnable(mockSet);
Runnable appRunnable = new AppMock(mockSet); Runnable appRunnable = new AppMock(mockSet);

@ -1,5 +1,5 @@
public class MockSet { public class MockSet {
PublicMock publicMock; UserMock userMock;
BridgeMock bridgeMock; BridgeMock bridgeMock;
ClientMock clientMock; ClientMock clientMock;
AppMock appMock; AppMock appMock;

@ -2,10 +2,10 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
public class PublicMock extends ActorRunnable { public class UserMock extends ActorRunnable {
public PublicMock(MockSet mockSet){ public UserMock(MockSet mockSet){
super(mockSet); super(mockSet);
} }

@ -2,7 +2,18 @@ package exchange;
import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletRequest;
public class RequestMock extends MockHttpServletRequest { import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;
import java.util.Collection;
/**
* - Contains reference to ExchangeMock
* - Rest is dummy code.
*/
public class RequestMock extends MockHttpServletRequest implements HttpServletRequest {
public ExchangeMock exchange; public ExchangeMock exchange;
@ -10,4 +21,64 @@ public class RequestMock extends MockHttpServletRequest {
super(); super();
this.exchange = exchange; this.exchange = exchange;
} }
@Override
public boolean authenticate(HttpServletResponse httpServletResponse) throws IOException, ServletException {
return false;
}
@Override
public void login(String s, String s1) throws ServletException {
}
@Override
public void logout() throws ServletException {
}
@Override
public Collection<Part> getParts() throws IOException, ServletException {
return null;
}
@Override
public Part getPart(String s) throws IOException, ServletException {
return null;
}
@Override
public ServletContext getServletContext() {
return null;
}
@Override
public AsyncContext startAsync() throws IllegalStateException {
return null;
}
@Override
public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException {
return null;
}
@Override
public boolean isAsyncStarted() {
return false;
}
@Override
public boolean isAsyncSupported() {
return false;
}
@Override
public AsyncContext getAsyncContext() {
return null;
}
@Override
public DispatcherType getDispatcherType() {
return null;
}
} }

@ -3,7 +3,20 @@ package exchange;
import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockHttpServletResponse;
public class ResponseMock extends MockHttpServletResponse { import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Locale;
import java.util.Set;
/**
* - Contains reference to ExchangeMock
* - Rest is dummy code.
*/
public class ResponseMock extends MockHttpServletResponse implements HttpServletResponse {
public ExchangeMock exchange; public ExchangeMock exchange;
@ -13,5 +26,183 @@ public class ResponseMock extends MockHttpServletResponse {
} }
@Override
public void addCookie(Cookie cookie) {
}
@Override
public boolean containsHeader(String s) {
return false;
}
@Override
public String encodeURL(String s) {
return null;
}
@Override
public String encodeRedirectURL(String s) {
return null;
}
@Override
public String encodeUrl(String s) {
return null;
}
@Override
public String encodeRedirectUrl(String s) {
return null;
}
@Override
public void sendError(int i, String s) throws IOException {
}
@Override
public void sendError(int i) throws IOException {
}
@Override
public void sendRedirect(String s) throws IOException {
}
@Override
public void setDateHeader(String s, long l) {
}
@Override
public void addDateHeader(String s, long l) {
}
@Override
public void setHeader(String s, String s1) {
}
@Override
public void addHeader(String s, String s1) {
}
@Override
public void setIntHeader(String s, int i) {
}
@Override
public void addIntHeader(String s, int i) {
}
@Override
public void setStatus(int i) {
}
@Override
public void setStatus(int i, String s) {
}
@Override
public int getStatus() {
return 0;
}
@Override
public String getHeader(String s) {
return null;
}
@Override
public List getHeaders(String s) {
return null;
}
@Override
public Set getHeaderNames() {
return null;
}
@Override
public String getCharacterEncoding() {
return null;
}
@Override
public String getContentType() {
return null;
}
@Override
public ServletOutputStream getOutputStream() {
return null;
}
@Override
public PrintWriter getWriter() {
return null;
}
@Override
public void setCharacterEncoding(String s) {
}
@Override
public void setContentLength(int i) {
}
@Override
public void setContentType(String s) {
}
@Override
public void setBufferSize(int i) {
}
@Override
public int getBufferSize() {
return 0;
}
@Override
public void flushBuffer() {
}
@Override
public void resetBuffer() {
}
@Override
public boolean isCommitted() {
return false;
}
@Override
public void reset() {
}
@Override
public void setLocale(Locale locale) {
}
@Override
public Locale getLocale() {
return null;
}
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

@ -45,7 +45,7 @@ layer=-1</panel_attributes>
<w>90</w> <w>90</w>
<h>30</h> <h>30</h>
</coordinates> </coordinates>
<panel_attributes>public <panel_attributes>user
bg=#90CAF9</panel_attributes> bg=#90CAF9</panel_attributes>
<additional_attributes/> <additional_attributes/>
</element> </element>

Loading…
Cancel
Save