package com.intellij.lang.javascript.flex.flexunit;
import com.intellij.execution.ExecutionException;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream;
import com.intellij.util.ResourceUtil;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
public class SwfPolicyFileConnection extends ServerConnectionBase {
private static final String POLICY_FILE_REQUEST = "<policy-file-request/>";
public static final int DEFAULT_PORT = 843;
private static final Logger LOG = Logger.getInstance(FlexUnitConnection.class.getName());
private final String myContent;
public SwfPolicyFileConnection() throws ExecutionException {
final URL resource = getClass().getResource("SocketPolicyFile.xml");
try {
myContent = ResourceUtil.loadText(resource);
}
catch (IOException e) {
throw new ExecutionException(e.getMessage(), e);
}
}
protected void run(InputStream inputStream) throws IOException {
InputStreamReader reader = new InputStreamReader(inputStream);
BufferExposingByteArrayOutputStream buffer = new BufferExposingByteArrayOutputStream(100);
while (!isStopped()) {
int i = reader.read();
if (i == -1) return;
if (i == 0) break;
buffer.write(i);
}
final String request = new String(buffer.getInternalBuffer(), 0, buffer.size());
LOG.debug("Policy file request: " + request);
if (POLICY_FILE_REQUEST.equals(request)) {
write(myContent);
}
}
}