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;
- }
-}