Removed PrintWriterManager from bikeshed and "inlined" its use in bikeshed. Review at http://gwt-code-reviews.appspot.com/627801 Review by: rjrjr@google.com git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8266 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/bikeshed/src/com/google/gwt/app/rebind/EditorSupportGenerator.java b/bikeshed/src/com/google/gwt/app/rebind/EditorSupportGenerator.java index 80d6c0e..4625338 100644 --- a/bikeshed/src/com/google/gwt/app/rebind/EditorSupportGenerator.java +++ b/bikeshed/src/com/google/gwt/app/rebind/EditorSupportGenerator.java
@@ -34,7 +34,6 @@ import com.google.gwt.user.client.ui.HasText; import com.google.gwt.user.client.ui.TakesValue; import com.google.gwt.user.rebind.ClassSourceFileComposerFactory; -import com.google.gwt.user.rebind.PrintWriterManager; import com.google.gwt.user.rebind.SourceWriter; import com.google.gwt.valuestore.shared.Property; @@ -120,15 +119,12 @@ interfaceType, logger); String implName = getImplName(superinterfaceType); String packageName = interfaceType.getPackage().getName(); - PrintWriterManager printWriters = new PrintWriterManager(generatorContext, - logger, packageName); - PrintWriter out = printWriters.tryToMakePrintWriterFor(implName); + PrintWriter out = generatorContext.tryCreate(logger, packageName, implName); // If an implementation already exists, we don't need to do any work if (out != null) { generateOnce(logger, generatorContext, out, interfaceType, packageName, implName, superinterfaceType); - printWriters.commit(); } return packageName + "." + implName; @@ -190,6 +186,7 @@ sw.outdent(); sw.println("}"); + generatorContext.commit(logger, out); } private Collection<JMethod> getAccessibleMethods(JClassType classType) {
diff --git a/bikeshed/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java b/bikeshed/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java index d8f1bc9..309ffd5 100644 --- a/bikeshed/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java +++ b/bikeshed/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
@@ -40,7 +40,6 @@ import com.google.gwt.requestfactory.shared.ServerOperation; import com.google.gwt.requestfactory.shared.impl.RequestDataManager; import com.google.gwt.user.rebind.ClassSourceFileComposerFactory; -import com.google.gwt.user.rebind.PrintWriterManager; import com.google.gwt.user.rebind.SourceWriter; import com.google.gwt.valuestore.shared.Property; import com.google.gwt.valuestore.shared.Record; @@ -95,16 +94,15 @@ } String packageName = interfaceType.getPackage().getName(); - PrintWriterManager printWriters = new PrintWriterManager(generatorContext, - logger, packageName); + // the replace protects against inner classes String implName = interfaceType.getName().replace('.', '_') + "Impl"; - PrintWriter out = printWriters.tryToMakePrintWriterFor(implName); + PrintWriter out = generatorContext.tryCreate(logger, packageName, implName); // If an implementation already exists, we don't need to do any work if (out != null) { - generateOnce(logger, generatorContext, printWriters, out, interfaceType, - packageName, implName); + generateOnce(logger, generatorContext, out, interfaceType, packageName, + implName); } return packageName + "." + implName; @@ -120,9 +118,8 @@ } private void ensureRecordType(TreeLogger logger, - GeneratorContext generatorContext, PrintWriterManager printWriters, - String packageName, JClassType publicRecordType) - throws UnableToCompleteException { + GeneratorContext generatorContext, String packageName, + JClassType publicRecordType) throws UnableToCompleteException { TypeOracle typeOracle = generatorContext.getTypeOracle(); if (!publicRecordType.isAssignableTo(typeOracle.findType(Record.class.getName()))) { @@ -134,8 +131,8 @@ } String recordImplTypeName = publicRecordType.getName() + "Impl"; - PrintWriter pw = printWriters.tryToMakePrintWriterFor(recordImplTypeName); - + PrintWriter pw = generatorContext.tryCreate(logger, packageName, + recordImplTypeName); if (pw != null) { logger = logger.branch(TreeLogger.DEBUG, "Generating " + publicRecordType.getName()); @@ -215,15 +212,16 @@ sw.outdent(); sw.println("}"); + generatorContext.commit(logger, pw); } generatedRecordTypes.add(publicRecordType); } private void generateOnce(TreeLogger logger, - GeneratorContext generatorContext, PrintWriterManager printWriters, - PrintWriter out, JClassType interfaceType, String packageName, - String implName) throws UnableToCompleteException { + GeneratorContext generatorContext, PrintWriter out, + JClassType interfaceType, String packageName, String implName) + throws UnableToCompleteException { logger = logger.branch(TreeLogger.DEBUG, String.format( "Generating implementation of %s", interfaceType.getName())); @@ -287,22 +285,22 @@ for (JClassType nestedInterface : requestSelectors) { String nestedImplName = nestedInterface.getName() + "Impl"; - PrintWriter pw = printWriters.makePrintWriterFor(nestedImplName); + PrintWriter pw = generatorContext.tryCreate(logger, packageName, + nestedImplName); if (pw != null) { - generateRequestSelectorImplementation(logger, generatorContext, - printWriters, pw, nestedInterface, interfaceType, packageName, - nestedImplName); + generateRequestSelectorImplementation(logger, generatorContext, pw, + nestedInterface, interfaceType, packageName, nestedImplName); } } // generate the mapping type implementation - PrintWriter pw = printWriters.makePrintWriterFor(recordToTypeMapName); + PrintWriter pw = generatorContext.tryCreate(logger, packageName, + recordToTypeMapName); if (pw != null) { generateRecordToTypeMap(logger, generatorContext, pw, recordToTypeInterface, packageName, recordToTypeMapName); } - - printWriters.commit(); + generatorContext.commit(logger, out); } private void generateRecordToTypeMap(TreeLogger logger, @@ -349,12 +347,13 @@ sw.outdent(); sw.println("}"); + generatorContext.commit(logger, out); } private void generateRequestSelectorImplementation(TreeLogger logger, - GeneratorContext generatorContext, PrintWriterManager printWriters, - PrintWriter out, JClassType interfaceType, JClassType mainType, - String packageName, String implName) throws UnableToCompleteException { + GeneratorContext generatorContext, PrintWriter out, + JClassType interfaceType, JClassType mainType, String packageName, + String implName) throws UnableToCompleteException { logger = logger.branch(TreeLogger.DEBUG, String.format( "Generating implementation of %s", interfaceType.getName())); @@ -383,7 +382,7 @@ for (JMethod method : interfaceType.getMethods()) { JClassType returnType = method.getReturnType().isParameterized().getTypeArgs()[0]; - ensureRecordType(logger, generatorContext, printWriters, + ensureRecordType(logger, generatorContext, returnType.getPackage().getName(), returnType); ServerOperation annotation = method.getAnnotation(ServerOperation.class); @@ -433,6 +432,7 @@ sw.outdent(); sw.println("}"); + generatorContext.commit(logger, out); } /**
diff --git a/bikeshed/src/com/google/gwt/user/rebind/PrintWriterManager.java b/bikeshed/src/com/google/gwt/user/rebind/PrintWriterManager.java deleted file mode 100644 index 0e65299..0000000 --- a/bikeshed/src/com/google/gwt/user/rebind/PrintWriterManager.java +++ /dev/null
@@ -1,75 +0,0 @@ -/* - * Copyright 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.google.gwt.user.rebind; - -import com.google.gwt.core.ext.GeneratorContext; -import com.google.gwt.core.ext.TreeLogger; - -import java.io.PrintWriter; -import java.util.HashSet; -import java.util.Set; - -/** - * Factory for printwriters creating source files in a particular package. - */ -public class PrintWriterManager { - private final GeneratorContext genCtx; - private final String packageName; - private final TreeLogger logger; - private final Set<PrintWriter> writers = new HashSet<PrintWriter>(); - - public PrintWriterManager(GeneratorContext genCtx, TreeLogger logger, - String packageName) { - this.genCtx = genCtx; - this.packageName = packageName; - this.logger = logger; - } - - /** - * Commit all writers we have vended. - */ - public void commit() { - for (PrintWriter writer : writers) { - genCtx.commit(logger, writer); - } - } - - /** - * @param name classname - * @return the printwriter - * @throws RuntimeException if this class has already been written - */ - public PrintWriter makePrintWriterFor(String name) { - PrintWriter writer = tryToMakePrintWriterFor(name); - if (writer == null) { - throw new RuntimeException(String.format("Tried to write %s.%s twice.", - packageName, name)); - } - return writer; - } - - /** - * @param name classname - * @return the printwriter, or null if this class has already been written - */ - public PrintWriter tryToMakePrintWriterFor(String name) { - PrintWriter writer = genCtx.tryCreate(logger, packageName, name); - if (writer != null) { - writers.add(writer); - } - return writer; - } -}