package com.limegroup.gnutella.lws.server; import java.util.Map; import javax.swing.JOptionPane; import org.limewire.lws.server.StringCallback; import org.limewire.net.SocketsManager; /** * This class represents fake javascript code that can * communicate to the remote server and local server on the client. */ public final class FakeJavascriptCodeInTheWebpage { private final LocalServerDelegate toLocalServer; private final LocalServerDelegate toRemoteServer; public interface Handler { public final static Handler ALERT = new Handler() { public void handle(String res) { JOptionPane.showMessageDialog(null, res); } }; void handle(String res); } FakeJavascriptCodeInTheWebpage(SocketsManager socketsManager, LocalServerImpl local, RemoteServerImpl remote) { this.toLocalServer = new LocalServerDelegate(socketsManager, "localhost", local.getPort()); this.toRemoteServer = new LocalServerDelegate(socketsManager, "localhost", remote.getPort()); } protected final void sendLocalMsg(String msg, Map<String, String> args, final Handler h) { toLocalServer.sendMessageToServer(msg, args, new StringCallback() { public void process(String response) { h.handle(removeHeaders(response)); } }, LocalServerDelegate.NormalStyleURLConstructor.INSTANCE); } protected final void sendRemoteMsg(String msg, Map<String, String> args, final Handler h) { toRemoteServer.sendMessageToServer(msg, args, new StringCallback() { public void process(String response) { h.handle(removeHeaders(response)); } }, LocalServerDelegate.WicketStyleURLConstructor.INSTANCE); } private String removeHeaders(String response) { if (response == null) return null; // // Search for two NEWLINEs // This totally sucks, but it's just testing // String target = "\n\n"; int itarget = response.indexOf(target); String res = itarget == -1 ? response : response.substring(itarget+target.length()); res = res.trim(); return res; } }