blob: 724fd7c045fb074ec96c56cb96533be309217875 [file] [log] [blame]
/*******************************************************************************
* /*******************************************************************************
* * Copyright (c) 2009, 2016 Xored Software Inc and others.
* * All rights reserved. This program and the accompanying materials
* * are made available under the terms of the Eclipse Public License v1.0
* * which accompanies this distribution, and is available at
* * http://www.eclipse.org/legal/epl-v10.html
* *
* * Contributors:
* * Xored Software Inc - initial API and implementation and/or initial documentation
* *******************************************************************************/
package org.eclipse.rcptt.tesla.recording.aspects.swt.rap;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.rap.rwt.service.ServiceHandler;
import org.eclipse.rcptt.tesla.swt.download.OutputStreamResponseWrapper;
import org.eclipse.rcptt.util.Base64;
public class ServiceHandlerWrapper implements ServiceHandler {
private ServiceHandler wrapper;
private String handlerId;
public ServiceHandlerWrapper(ServiceHandler wrapped, String handlerId) {
this.wrapper = wrapped;
this.handlerId = handlerId;
}
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
final OutputStreamResponseWrapper wrappedResponse = new OutputStreamResponseWrapper(response, true);
wrapper.service(request, wrappedResponse);
final ByteArrayOutputStream spyStream = wrappedResponse.getSpyOutputStream();
final String content = Base64.encode(spyStream.toByteArray());
final String url = "/?" + request.getQueryString(); //$NON-NLS-1$
SWTEventManager.recordRapDownload(handlerId, url, content);
}
}