package com.google.gwt.chrome.crx.linker.emiter; import com.google.gwt.chrome.crx.client.BrowserAction; import com.google.gwt.chrome.crx.client.ExtensionScript; import com.google.gwt.chrome.crx.linker.artifact.ExtensionScriptArtifact; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.typeinfo.JClassType; /** * @author zinur * */ public class ExtentionsScriptEmiter extends AbstractEmiter { /* * (non-Javadoc) * * @see * com.google.gwt.chrome.crx.linker.emiter.Emiter#emit(com.google.gwt.core * .ext.TreeLogger, com.google.gwt.core.ext.GeneratorContext, * com.google.gwt.core.ext.typeinfo.JClassType, java.lang.String) */ @Override public String emit(TreeLogger logger, GeneratorContext context, JClassType userType, String typeName) throws UnableToCompleteException { processExtensionScript(logger, context, userType, typeName); return typeName; } /** * @param logger * @param context * @param userType * @param typeName * @throws UnableToCompleteException */ private void processExtensionScript(TreeLogger logger, GeneratorContext context, JClassType userType, String typeName) throws UnableToCompleteException { ExtensionScript.ManifestInfo spec = userType.getAnnotation(ExtensionScript.ManifestInfo.class); Validator<ExtensionScript.ManifestInfo> validator; validator = new Validator<ExtensionScript.ManifestInfo>(logger, BrowserAction.class.getName(), typeName); validator.ensureAnnotatedWithManifest(spec); context.commitArtifact(logger, new ExtensionScriptArtifact(spec.path(), spec.script())); } }