package linker;
import com.google.gwt.core.ext.LinkerContext;
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.linker.AbstractLinker;
import com.google.gwt.core.ext.linker.ArtifactSet;
import com.google.gwt.core.ext.linker.EmittedArtifact;
import com.google.gwt.core.ext.linker.LinkerOrder;
import com.google.gwt.core.ext.linker.LinkerOrder.Order;
@LinkerOrder(Order.POST)
public class OfflineLinker extends AbstractLinker {
@Override
public String getDescription() {
return "HTML 5 Offline Linker";
}
@Override
public ArtifactSet link(TreeLogger logger, LinkerContext context, ArtifactSet artifacts) throws UnableToCompleteException {
ArtifactSet artifactSet = new ArtifactSet(artifacts);
StringBuilder buf = new StringBuilder();
buf.append("CACHE MANIFEST\n" + //
"../image.png\n" + //
"../images.html\n" + //
"../sync-24.gif\n" + //
"../sync-complete-24.png\n" + //
"../sync-disconnected-24.png\n" + //
"examples.app.nocache.js\n");
for (EmittedArtifact artifact : artifacts.find(EmittedArtifact.class))
if (artifact.getPartialPath().endsWith("cache.js"))
buf.append("").append(artifact.getPartialPath()).append("\n");
buf.append("\n" + //
"NETWORK:\n" + //
"*\n");
EmittedArtifact artifact = emitString(logger, buf.toString(), "cache.manifest");
artifactSet.add(artifact);
return artifactSet;
}
}