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
-~----------~----~----~----~------~----~------~--~---

Reply via email to