use of com.google.gwt.core.ext.typeinfo.TypeOracle in project rstudio by rstudio.
the class JavaScriptSerializerGenerator method generate.
@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException {
TypeOracle oracle = context.getTypeOracle();
List<JClassType> classes = new ArrayList<JClassType>();
// locate all the types annotated with JavaScriptSerializable
for (JClassType classType : oracle.getTypes()) {
if (isAnnotatedSerializable(classType))
classes.add(classType);
}
ClassSourceFileComposerFactory sourceFile = new ClassSourceFileComposerFactory(genPackageName, genClassName);
sourceFile.addImplementedInterface(JavaScriptSerializer.class.getCanonicalName());
sourceFile.addImport("com.google.gwt.core.client.JavaScriptObject");
sourceFile.addImport("org.rstudio.core.client.js.JsObject;");
PrintWriter printWriter = context.tryCreate(logger, genPackageName, genClassName);
if (printWriter != null) {
SourceWriter sourceWriter = sourceFile.createSourceWriter(context, printWriter);
sourceWriter.println(genClassName + "() {");
sourceWriter.println("}");
printSerializers(classes, sourceWriter);
printDeserializers(classes, sourceWriter);
sourceWriter.commit(logger);
}
return sourceFile.getCreatedClassName();
}
use of com.google.gwt.core.ext.typeinfo.TypeOracle in project libgdx by libgdx.
the class ReflectionCacheGenerator method generate.
@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException {
TypeOracle oracle = context.getTypeOracle();
assert (oracle != null);
JClassType type = oracle.findType(typeName);
if (type == null) {
logger.log(ERROR, "Couldn't find type '" + typeName + "'");
throw new UnableToCompleteException();
}
if (type.isInterface() == null) {
logger.log(ERROR, "Type '" + typeName + "' must be an interface");
throw new UnableToCompleteException();
}
ReflectionCacheSourceCreator source = new ReflectionCacheSourceCreator(logger, context, type);
return source.create();
}
use of com.google.gwt.core.ext.typeinfo.TypeOracle in project gerrit by GerritCodeReview.
the class PluginGenerator method generate.
@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException {
// The TypeOracle knows about all types in the type system
TypeOracle typeOracle = context.getTypeOracle();
// Get a reference to the type that the generator should implement
JClassType sourceType = typeOracle.findType(typeName);
// Ensure that the requested type exists
if (sourceType == null) {
logger.log(TreeLogger.ERROR, "Could not find requested typeName", null);
throw new UnableToCompleteException();
}
// Make sure the Gadget type is correctly defined
validateType(logger, sourceType);
// Pick a name for the generated class to not conflict.
String generatedSimpleSourceName = sourceType.getSimpleSourceName() + "PluginImpl";
// Begin writing the generated source.
ClassSourceFileComposerFactory f = new ClassSourceFileComposerFactory(sourceType.getPackage().getName(), generatedSimpleSourceName);
f.addImport(GWT.class.getName());
f.setSuperclass(typeName);
// All source gets written through this Writer
PrintWriter out = context.tryCreate(logger, sourceType.getPackage().getName(), generatedSimpleSourceName);
// If an implementation already exists, we don't need to do any work
if (out != null) {
// We really use a SourceWriter since it's convenient
SourceWriter sw = f.createSourceWriter(context, out);
sw.commit(logger);
}
return f.getCreatedClassName();
}
use of com.google.gwt.core.ext.typeinfo.TypeOracle in project che by eclipse.
the class ExtensionRegistryGenerator method generate.
/** {@inheritDoc} */
@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException {
TypeOracle typeOracle = context.getTypeOracle();
JClassType extensionManager = typeOracle.findType(typeName);
if (extensionManager == null) {
logger.log(TreeLogger.ERROR, "Can't find interface type '" + typeName + "'", null);
throw new UnableToCompleteException();
}
if (extensionManager.isInterface() == null) {
logger.log(TreeLogger.ERROR, extensionManager.getQualifiedSourceName() + " is not an interface", null);
throw new UnableToCompleteException();
}
List<JClassType> extensions = new ArrayList<>();
for (JClassType type : typeOracle.getTypes()) {
if (type.isAnnotationPresent(Extension.class)) {
extensions.add(type);
}
}
String packageName = extensionManager.getPackage().getName();
String className = extensionManager.getSimpleSourceName() + "Impl";
generateClass(logger, context, packageName, className, extensions);
return packageName + "." + className;
}
use of com.google.gwt.core.ext.typeinfo.TypeOracle in project gwt-test-utils by gwt-test-utils.
the class GwtFactory method createOverlayRewriter.
private OverlayTypesRewriter createOverlayRewriter(CompilationState compilationState) {
TypeOracle typeOracle = compilationState.getTypeOracle();
JClassType jsoType = typeOracle.findType(JsValueGlue.JSO_CLASS);
// If we couldn't find the JSO class, we don't need to do any rewrites.
return jsoType != null ? new OverlayTypesRewriter(compilationState, jsoType) : null;
}
Aggregations