/**
*
*/
package com.google.gwt.chrome.crx.linker;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import com.google.gwt.core.ext.Generator;
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.core.ext.linker.impl.StandardLinkerContext;
import com.google.gwt.dev.util.DiskCache;
/**
* @author webdizz
*
*/
public class ContentScriptGeneratedResource extends GeneratedResource {
/**
*
*/
private static final long serialVersionUID = -5009602681961304736L;
private static final DiskCache diskCache = new DiskCache();
private final long lastModified = System.currentTimeMillis();
private transient long token;
public ContentScriptGeneratedResource(Class<? extends Generator> generatorType, String partialPath, byte[] data) {
super(StandardLinkerContext.class, generatorType, partialPath);
this.token = diskCache.writeByteArray(data);
}
@Override
public InputStream getContents(TreeLogger logger) throws UnableToCompleteException {
return new ByteArrayInputStream(diskCache.readByteArray(token));
}
@Override
public long getLastModified() {
return lastModified;
}
@Override
public void writeTo(TreeLogger logger, OutputStream out) throws UnableToCompleteException {
diskCache.transferToStream(token, out);
}
private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
stream.defaultReadObject();
token = diskCache.transferFromStream(stream);
}
private void writeObject(ObjectOutputStream stream) throws IOException {
stream.defaultWriteObject();
diskCache.transferToStream(token, stream);
}
}