@Override protected void onClose(boolean aborted) { if (!aborted) { ctx.commit(logger, pw); } } }, pkgName, className);
@Override protected void onClose(boolean aborted) { if (!aborted) { ctx.commit(logger, pw); } } }, pkgName, className);
/** * Commit all writers we have vended. */ void commit() { for (PrintWriter writer : writers) { genCtx.commit(logger, writer); } }
/** * Commit all writers we have vended. */ void commit() { for (PrintWriter writer : writers) { genCtx.commit(logger, writer); } }
public void commit(TreeLogger logger) { outdent(); println("}"); printWriter.close(); // If generating a class on the command line, may not have a if (ctx != null) { ctx.commit(logger, printWriter); } }
public void commit(TreeLogger logger) { outdent(); println("}"); printWriter.close(); // If generating a class on the command line, may not have a if (ctx != null) { ctx.commit(logger, printWriter); } }
/** * Writes the given type to the {@link PrintWriter}. * * @param packageName the package for the type * @param type the type * @param printWriter the writer * @throws com.google.gwt.core.ext.UnableToCompleteException if an exception is thrown by the writer */ protected final void write( String packageName, TypeSpec type, PrintWriter printWriter ) throws UnableToCompleteException { try { JavaFile.builder( packageName, type ) .build() .writeTo( printWriter ); context.commit( logger, printWriter ); } catch ( IOException e ) { logger.log( TreeLogger.Type.ERROR, "Error writing the file " + packageName + "." + type.name, e ); throw new UnableToCompleteException(); } }
public void commit(TreeLogger logger, GeneratorContext ctx) { int pos = sourceClasses.size()-1; while (out != null) { // commit const pool(s) PrintWriter pw = ctx.tryCreate(logger, out.getPackage(), out.getClassBuffer().getSimpleName()); pw.println(out.toString()); ctx.commit(logger, pw); // erase our writer sourceClasses.set(pos--, null); if (pos < 0) out = null; else out = sourceClasses.get(pos); } }
@Override public RebindResult generateIncrementally(final TreeLogger logger, final GeneratorContext context, final String typeName) throws UnableToCompleteException { final String fullyQualifiedTypeName = distillTargetTypeName(typeName); final MetaClass type = MetaClassFactory.get(fullyQualifiedTypeName); final String className = MarshallerGeneratorFactory.getMarshallerImplClassName(type, true); final String marshallerTypeName = packageName + "." + className; final MetaClass cachedType = cachedPortableTypes.get(fullyQualifiedTypeName); final PrintWriter printWriter = context.tryCreate(logger, packageName, className); if (printWriter != null) { if (!RebindUtils.NO_CACHE && cachedType != null && cachedType.hashContent() == type.hashContent()) { log.debug("Reusing cached marshaller for {}", fullyQualifiedTypeName); printWriter.append(cachedSourceByTypeName.get(fullyQualifiedTypeName)); context.commit(logger, printWriter); } else { log.debug("Generating marshaller for {}", fullyQualifiedTypeName); final String generatedSource = generateMarshaller(context, type, className, marshallerTypeName, logger, printWriter); cachedPortableTypes.put(fullyQualifiedTypeName, type); cachedSourceByTypeName.put(fullyQualifiedTypeName, generatedSource); } return new RebindResult(RebindMode.USE_ALL_NEW, marshallerTypeName); } else { log.debug("Reusing existing marshaller for {}", fullyQualifiedTypeName); return new RebindResult(RebindMode.USE_EXISTING, marshallerTypeName); } }
@Override public RebindResult generateIncrementally(final TreeLogger logger, final GeneratorContext context, final String typeName) throws UnableToCompleteException { final String fullyQualifiedTypeName = distillTargetTypeName(typeName); final MetaClass type = MetaClassFactory.get(fullyQualifiedTypeName); final String className = MarshallerGeneratorFactory.getMarshallerImplClassName(type, true); final String marshallerTypeName = packageName + "." + className; final MetaClass cachedType = cachedPortableTypes.get(fullyQualifiedTypeName); final PrintWriter printWriter = context.tryCreate(logger, packageName, className); if (printWriter != null) { if (!RebindUtils.NO_CACHE && cachedType != null && cachedType.hashContent() == type.hashContent()) { log.debug("Reusing cached marshaller for {}", fullyQualifiedTypeName); printWriter.append(cachedSourceByTypeName.get(fullyQualifiedTypeName)); context.commit(logger, printWriter); } else { log.debug("Generating marshaller for {}", fullyQualifiedTypeName); final String generatedSource = generateMarshaller(context, type, className, marshallerTypeName, logger, printWriter); cachedPortableTypes.put(fullyQualifiedTypeName, type); cachedSourceByTypeName.put(fullyQualifiedTypeName, generatedSource); } return new RebindResult(RebindMode.USE_ALL_NEW, marshallerTypeName); } else { log.debug("Reusing existing marshaller for {}", fullyQualifiedTypeName); return new RebindResult(RebindMode.USE_EXISTING, marshallerTypeName); } }
public void commit(final TreeLogger logger, final GeneratorContext ctx) { int pos = sourceClasses.size()-1; final Type logLevel = logLevel(); final boolean doLog = logger.isLoggable(logLevel); while (out != null) { // commit const pool(s) final PrintWriter pw = ctx.tryCreate(logger, out.getPackage(), out.getClassBuffer().getSimpleName()); final String src = out.toString(); if (doLog) { logger.log(logLevel, "Generating constPool: \n"+src); } pw.println(src); ctx.commit(logger, pw); // erase our writer sourceClasses.set(pos--, null); if (pos < 0) { out = null; } else { out = sourceClasses.get(pos); } } }
public IsQualified annotationArraySupplier(final TreeLogger logger, final GeneratorContext ctx, final MemberBuffer<?> buffer, final Annotation ... annos) throws UnableToCompleteException { final String constant = rememberArrayOfAnnotations(logger, ctx, annos); IsQualified supplier = annotationArraySuppliers.get(constant); if (supplier == null) { final String simpleName = "AnnotationSupplier"+iteration+"_"+annotationArraySuppliers.size(); final String pkgName = "constants"; supplier = new IsQualified(pkgName, simpleName); final PrintWriter pw = ctx.tryCreate(logger, pkgName, simpleName); final SourceBuilder<Object> sb = new SourceBuilder<Object>("public class "+simpleName); sb.setPackage(pkgName); final ClassBuffer out = sb.getClassBuffer(); final String supplierClass = out.addImport(Supplier.class); final String annotationClass = out.addImport(Annotation.class); out.addInterface(supplierClass+"<"+annotationClass+"[]>"); out.createMethod("public "+annotationClass+"[] get()") .returnValue(constant); pw.print(sb.toString()); ctx.commit(logger, pw); annotationArraySuppliers.put(constant, supplier); } return supplier; }
private void generateClass(TreeLogger logger, GeneratorContext context) { // get print writer that receives the source code PrintWriter printWriter = context.tryCreate(logger, packageName, className); // print writer if null, source code has ALREADY been generated, if (printWriter == null) { return; } // init composer, set class properties, create source writer ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, className); composer.addImplementedInterface(typeName); composer.addImport(Widget.class.getName()); SourceWriter sourceWriter = composer.createSourceWriter(context, printWriter); // generator constructor source code generateExtensions(context, logger, sourceWriter); // close generated class sourceWriter.outdent(); sourceWriter.println("}"); // commit generated class context.commit(logger, printWriter); }
private String generateMarshaller(final GeneratorContext context, final MetaClass type, final String className, final String marshallerTypeName, final TreeLogger logger, final PrintWriter printWriter) { final MarshallerOutputTarget target = MarshallerOutputTarget.GWT; final MappingStrategy strategy = MappingStrategyFactory.createStrategy(true, GeneratorMappingContextFactory.getFor(context, target), type); String gen = null; if (type.isArray()) { final BuildMetaClass marshallerClass = MarshallerGeneratorFactory.generateArrayMarshaller(type, marshallerTypeName, true); gen = marshallerClass.toJavaString(); } else { final ClassStructureBuilder<?> marshaller = strategy.getMapper().getMarshaller(marshallerTypeName); gen = marshaller.toJavaString(); } printWriter.append(gen); RebindUtils.writeStringToJavaSourceFileInErraiCacheDir(packageName, className, gen); context.commit(logger, printWriter); return gen; }
private String generateMarshaller(final GeneratorContext context, final MetaClass type, final String className, final String marshallerTypeName, final TreeLogger logger, final PrintWriter printWriter) { final MarshallerOutputTarget target = MarshallerOutputTarget.GWT; final MappingStrategy strategy = MappingStrategyFactory.createStrategy(true, GeneratorMappingContextFactory.getFor(context, target), type); String gen = null; if (type.isArray()) { final BuildMetaClass marshallerClass = MarshallerGeneratorFactory.generateArrayMarshaller(type, marshallerTypeName, true); gen = marshallerClass.toJavaString(); } else { final ClassStructureBuilder<?> marshaller = strategy.getMapper().getMarshaller(marshallerTypeName); gen = marshaller.toJavaString(); } printWriter.append(gen); RebindUtils.writeStringToJavaSourceFileInErraiCacheDir(packageName, className, gen); context.commit(logger, printWriter); return gen; }
/** * Generate source code for new class. Class extends * <code>HashMap</code>. * * @param logger Logger object * @param context Generator context */ private void generateClass(TreeLogger logger, GeneratorContext context) { // get print writer that receives the source code PrintWriter printWriter = context.tryCreate(logger, packageName, className); // print writer if null, source code has ALREADY been generated, if (printWriter == null) return; // init composer, set class properties, create source writer ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, className); composer.addImplementedInterface("org.jboss.errai.workspaces.client.framework.WorkspaceConfig"); SourceWriter sourceWriter = composer.createSourceWriter(context, printWriter); ctx = new ProcessingContext(logger, context, sourceWriter, typeOracle); iocGenerator = new IOCGenerator(ctx); iocGenerator.initializeProviders(context, logger, sourceWriter); // generator constructor source code generateBootstrapClass(context, logger, sourceWriter); // close generated class sourceWriter.outdent(); sourceWriter.println("}"); // commit generated class context.commit(logger, printWriter); }
generatorContext.commit(logger, printWriter);
private void generateClass() { // get print writer that receives the source code PrintWriter printWriter; printWriter = context.tryCreate( logger, packageName, generatedClassName ); // print writer if null, source code has ALREADY been generated, return if( printWriter == null ) return; // init composer, set class properties, create source writer ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory( packageName, generatedClassName ); // output a class "typeName" + "Impl" // which extends the asked type composer.addImplementedInterface( askedType.getParameterizedQualifiedSourceName() ); composer.addImport( "fr.lteconsulting.hexa.classinfo.Clazz" ); composer.addImport( "fr.lteconsulting.hexa.classinfo.ClassInfo" ); composer.addImport( "com.google.gwt.core.shared.GWT" ); SourceWriter sourceWriter = composer.createSourceWriter( context, printWriter ); // generate the List<String> getMethods(); method generateClass( sourceWriter ); // close generated class sourceWriter.outdent(); sourceWriter.println( "}" ); // commit generated class context.commit( logger, printWriter ); }
private void buildClassInfo() { // get print writer that receives the source code PrintWriter printWriter; printWriter = context.tryCreate( logger, packageName, generatedClassName ); // print writer if null, source code has ALREADY been generated, return if( printWriter == null ) return; // init composer, set class properties, create source writer ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory( packageName, generatedClassName ); // output a class "typeName" + "Impl" // which extends the asked type composer.setSuperclass( "fr.lteconsulting.hexa.classinfo.internal.ClazzBase<" + reflectedTypeName + ">" ); composer.addImport( "java.util.List" ); composer.addImport( "java.util.ArrayList" ); composer.addImport( "fr.lteconsulting.hexa.classinfo.Field" ); composer.addImport( "fr.lteconsulting.hexa.classinfo.Method" ); SourceWriter sourceWriter = composer.createSourceWriter( context, printWriter ); // generate the List<String> getMethods(); method buildClassInfo(sourceWriter); // close generated class sourceWriter.outdent(); sourceWriter.println( "}" ); // commit generated class context.commit( logger, printWriter ); }
private void generateClass() { // get print writer that receives the source code PrintWriter printWriter; printWriter = context.tryCreate( logger, packageName, generatedClassName ); // print writer if null, source code has ALREADY been generated, return if( printWriter == null ) return; // init composer, set class properties, create source writer ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory( packageName, generatedClassName ); // output a class "typeName" + "Impl" // which extends the asked type composer.addImplementedInterface( askedType.getParameterizedQualifiedSourceName() ); composer.addImport( "fr.lteconsulting.hexa.classinfo.Clazz" ); composer.addImport( "fr.lteconsulting.hexa.classinfo.ClassInfo" ); composer.addImport( "com.google.gwt.core.shared.GWT" ); SourceWriter sourceWriter = composer.createSourceWriter( context, printWriter ); // generate the List<String> getMethods(); method generateClass( sourceWriter ); // close generated class sourceWriter.outdent(); sourceWriter.println( "}" ); // commit generated class context.commit( logger, printWriter ); }