Revision: 6494 Author: [email protected] Date: Tue Oct 27 17:23:14 2009 Log: Makes StandardGeneratedResource portable.
Patch by: spoon Review by: me http://code.google.com/p/google-web-toolkit/source/detail?r=6494 Modified: /trunk/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardGeneratedResource.java ======================================= --- /trunk/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardGeneratedResource.java Fri May 15 16:23:15 2009 +++ /trunk/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardGeneratedResource.java Tue Oct 27 17:23:14 2009 @@ -19,37 +19,62 @@ import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.linker.GeneratedResource; - +import com.google.gwt.dev.util.DiskCache; +import com.google.gwt.dev.util.Util; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.OutputStream; /** * The standard implementation of {...@link GeneratedResource}. */ public class StandardGeneratedResource extends GeneratedResource { - private final File file; + private static final DiskCache diskCache = new DiskCache(); + + private final long lastModified; + + private transient long token; public StandardGeneratedResource(Class<? extends Generator> generatorType, String partialPath, File file) { super(StandardLinkerContext.class, generatorType, partialPath); - this.file = file; + this.lastModified = file.lastModified(); + this.token = diskCache.writeByteArray(Util.readFileAsBytes(file)); } @Override public InputStream getContents(TreeLogger logger) throws UnableToCompleteException { - try { - return new FileInputStream(file); - } catch (IOException e) { - logger.log(TreeLogger.ERROR, "Unable to open file", e); - throw new UnableToCompleteException(); - } + return new ByteArrayInputStream(diskCache.readByteArray(token)); } @Override public long getLastModified() { - return file.lastModified(); + return lastModified; + } + + @Override + public void writeTo(TreeLogger logger, OutputStream out) + throws UnableToCompleteException { + diskCache.writeTo(token, out); + } + + private void readObject(ObjectInputStream stream) throws IOException, + ClassNotFoundException { + stream.defaultReadObject(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + Util.copyNoClose(stream, baos); + token = diskCache.writeByteArray(baos.toByteArray()); + } + + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + diskCache.writeTo(token, stream); } } --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---
