package com.acme.bean; import com.acme.bean.RemoteLocation; import com.sun.mail.iap.ByteArray; import javax.servlet.jsp.JspWriter; import java.util.Hashtable; import java.rmi.Remote; import java.net.URL; import java.io.*; /** * @author morphie * Date: 2005-feb-16 * Time: 06:54:28 */ public class RemoteLocationManager implements Serializable { private Hashtable entries=new Hashtable(); public byte[] getLocation(String location, long timeout) throws IOException { RemoteLocation remote=(RemoteLocation)entries.get(location); if(remote==null) remote=new RemoteLocation(); if(remote.expired()) remote.setData(getRemoteData(location)); remote.setTimeout(timeout); if(!entries.contains(location)) entries.put(location,remote); return remote.getData(); } private byte[] getRemoteData(String location) throws IOException { URL resource = new URL(location); BufferedReader in = new BufferedReader(new InputStreamReader(resource.openStream())); ByteArrayOutputStream data=new ByteArrayOutputStream(); PrintWriter writer=new PrintWriter(data); String inputLine; while ((inputLine = in.readLine()) != null) writer.write(inputLine); in.close(); return data.toByteArray(); } }