Provides an escape hatch to avoid metadata-related deprecation warnings.
Issue: #2183
Suggested by: bruce
Review by: mmendez
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2789 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/typeinfo/TypeOracle.java b/dev/core/src/com/google/gwt/core/ext/typeinfo/TypeOracle.java
index fdc7a64..d3dcd7a 100644
--- a/dev/core/src/com/google/gwt/core/ext/typeinfo/TypeOracle.java
+++ b/dev/core/src/com/google/gwt/core/ext/typeinfo/TypeOracle.java
@@ -17,6 +17,7 @@
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
+import com.google.gwt.dev.generator.GenUtil;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
@@ -640,12 +641,14 @@
}
private void consumeTypeArgMetaData(TreeLogger logger) {
- logger = logger.branch(
- TreeLogger.DEBUG,
- "Scanning source for uses of the deprecated "
- + TAG_TYPEARGS
- + " javadoc annotation; please use Java parameterized types instead",
- null);
+ if (GenUtil.warnAboutMetadata()) {
+ logger = logger.branch(
+ TreeLogger.DEBUG,
+ "Scanning source for uses of the deprecated "
+ + TAG_TYPEARGS
+ + " javadoc annotation; please use Java parameterized types instead",
+ null);
+ }
consumeTypeArgMetaData(logger, getTypes());
}
@@ -693,10 +696,12 @@
String[] token = tokensArray[tokensArray.length - 1];
JType resultingType = determineActualType(branch, fieldType, token, 0);
- branch.log(TreeLogger.WARN, "Deprecated use of " + TAG_TYPEARGS
- + " for field " + field.getName() + "; Please use "
- + resultingType.getParameterizedQualifiedSourceName()
- + " as the field's type", null);
+ if (GenUtil.warnAboutMetadata()) {
+ branch.log(TreeLogger.WARN, "Deprecated use of " + TAG_TYPEARGS
+ + " for field " + field.getName() + "; Please use "
+ + resultingType.getParameterizedQualifiedSourceName()
+ + " as the field's type", null);
+ }
field.setType(resultingType);
} catch (UnableToCompleteException e) {
@@ -747,10 +752,12 @@
param.getType(), tokens, 1);
param.setType(resultingType);
- branch.log(TreeLogger.WARN, "Deprecated use of " + TAG_TYPEARGS
- + " for parameter " + param.getName() + "; Please use "
- + resultingType.getParameterizedQualifiedSourceName()
- + " as the parameter's type", null);
+ if (GenUtil.warnAboutMetadata()) {
+ branch.log(TreeLogger.WARN, "Deprecated use of " + TAG_TYPEARGS
+ + " for parameter " + param.getName() + "; Please use "
+ + resultingType.getParameterizedQualifiedSourceName()
+ + " as the parameter's type", null);
+ }
paramsAlreadySet.add(param);
} else {
// This parameter type has already been set.
@@ -768,10 +775,12 @@
method.getReturnType(), tokens, 0);
method.setReturnType(resultingType);
- branch.log(TreeLogger.WARN, "Deprecated use of " + TAG_TYPEARGS
- + " for the return type; Please use "
- + resultingType.getParameterizedQualifiedSourceName()
- + " as the method's return type", null);
+ if (GenUtil.warnAboutMetadata()) {
+ branch.log(TreeLogger.WARN, "Deprecated use of " + TAG_TYPEARGS
+ + " for the return type; Please use "
+ + resultingType.getParameterizedQualifiedSourceName()
+ + " as the method's return type", null);
+ }
returnTypeHandled = true;
} else {
// The return type has already been set.
diff --git a/dev/core/src/com/google/gwt/dev/generator/GenUtil.java b/dev/core/src/com/google/gwt/dev/generator/GenUtil.java
new file mode 100644
index 0000000..4a70da7
--- /dev/null
+++ b/dev/core/src/com/google/gwt/dev/generator/GenUtil.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2008 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.dev.generator;
+
+/**
+ * Utility methods for generators to use.
+ */
+public class GenUtil {
+
+ /**
+ * If <code>true</code>, the default, generators should warn when a client
+ * uses old-style javadoc metadata rather than Java 1.5 annotations. If
+ * <code>false</code>, generators should not warn.
+ */
+ public static boolean warnAboutMetadata() {
+ return System.getProperty("gwt.nowarn.metadata") != null;
+ }
+
+ /**
+ * Not instantiable.
+ */
+ private GenUtil() {
+ }
+}
diff --git a/user/src/com/google/gwt/benchmarks/BenchmarkReport.java b/user/src/com/google/gwt/benchmarks/BenchmarkReport.java
index 3094d33..637b0c5 100644
--- a/user/src/com/google/gwt/benchmarks/BenchmarkReport.java
+++ b/user/src/com/google/gwt/benchmarks/BenchmarkReport.java
@@ -436,7 +436,7 @@
private <T extends HasMetaData & HasAnnotations> String getBenchmarkCategory(
TreeLogger deprecationBranch, T element) {
String category = getSimpleMetaData(element, GWT_BENCHMARK_CATEGORY);
- if (category != null) {
+ if (category != null && deprecationBranch != null) {
deprecationBranch.log(TreeLogger.WARN, GWT_BENCHMARK_CATEGORY + " has "
+ "been deprecated with no replacement.", null);
}
@@ -471,7 +471,8 @@
String categoryDescription = getSimpleMetaData(categoryType,
GWT_BENCHMARK_DESCRIPTION);
- if (categoryName != null || categoryDescription != null) {
+ if ((categoryName != null || categoryDescription != null)
+ && deprecationBranch != null) {
deprecationBranch.log(TreeLogger.WARN, GWT_BENCHMARK_NAME + " and "
+ GWT_BENCHMARK_DESCRIPTION + " have been deprecated with no "
+ "replacement", null);
diff --git a/user/src/com/google/gwt/benchmarks/rebind/BenchmarkGenerator.java b/user/src/com/google/gwt/benchmarks/rebind/BenchmarkGenerator.java
index 3174958..4c5863f 100644
--- a/user/src/com/google/gwt/benchmarks/rebind/BenchmarkGenerator.java
+++ b/user/src/com/google/gwt/benchmarks/rebind/BenchmarkGenerator.java
@@ -32,6 +32,7 @@
import com.google.gwt.core.ext.typeinfo.JField;
import com.google.gwt.core.ext.typeinfo.JMethod;
import com.google.gwt.core.ext.typeinfo.JParameter;
+import com.google.gwt.dev.generator.GenUtil;
import com.google.gwt.dev.generator.ast.ForLoop;
import com.google.gwt.dev.generator.ast.MethodCall;
import com.google.gwt.dev.generator.ast.Statement;
@@ -240,9 +241,11 @@
public void writeSource() throws UnableToCompleteException {
super.writeSource();
- deprecationBranch = logger.branch(TreeLogger.TRACE,
- "Scanning Benchmarks for deprecated annotations; please see "
- + BENCHMARK_CLASS + " for more information", null);
+ if (GenUtil.warnAboutMetadata()) {
+ deprecationBranch = logger.branch(TreeLogger.TRACE,
+ "Scanning Benchmarks for deprecated annotations; please see "
+ + BENCHMARK_CLASS + " for more information", null);
+ }
generateEmptyFunc(getSourceWriter());
implementZeroArgTestMethods();
@@ -491,10 +494,12 @@
return getAnnotationMetaData(method, bound);
}
- deprecationBranch.log(TreeLogger.WARN, "Deprecated use of "
- + BENCHMARK_PARAM_META + " at " + method.getEnclosingType() + " in "
- + method + "; please use the new Benchmark JDK 1.5 annotations in "
- + "com.google.gwt.benchmark.client", null);
+ if (deprecationBranch != null) {
+ deprecationBranch.log(TreeLogger.WARN, "Deprecated use of "
+ + BENCHMARK_PARAM_META + " at " + method.getEnclosingType() + " in "
+ + method + "; please use the new Benchmark JDK 1.5 annotations in "
+ + "com.google.gwt.benchmark.client", null);
+ }
Map<String, String> params = new HashMap<String, String>();
diff --git a/user/src/com/google/gwt/i18n/rebind/AbstractLocalizableImplCreator.java b/user/src/com/google/gwt/i18n/rebind/AbstractLocalizableImplCreator.java
index 0b92056..03036b4 100644
--- a/user/src/com/google/gwt/i18n/rebind/AbstractLocalizableImplCreator.java
+++ b/user/src/com/google/gwt/i18n/rebind/AbstractLocalizableImplCreator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Google Inc.
+ * Copyright 2008 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
@@ -337,9 +337,11 @@
* @param method method to warn about
*/
void warnOnMetadata(JMethod method) {
- deprecatedLogger.log(TreeLogger.WARN, "Deprecated metadata found on "
- + method.getEnclosingType().getSimpleSourceName() + "."
- + method.getName() + ";svn use annotations instead", null);
+ if (deprecatedLogger != null) {
+ deprecatedLogger.log(TreeLogger.WARN, "Deprecated metadata found on "
+ + method.getEnclosingType().getSimpleSourceName() + "."
+ + method.getName() + ";svn use annotations instead", null);
+ }
}
}
diff --git a/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java b/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java
index 6107c6c..2f8295b 100644
--- a/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java
+++ b/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Google Inc.
+ * Copyright 2008 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
@@ -24,6 +24,7 @@
import com.google.gwt.core.ext.typeinfo.JClassType;
import com.google.gwt.core.ext.typeinfo.NotFoundException;
import com.google.gwt.core.ext.typeinfo.TypeOracle;
+import com.google.gwt.dev.generator.GenUtil;
import com.google.gwt.i18n.client.Constants;
import com.google.gwt.i18n.client.ConstantsWithLookup;
import com.google.gwt.i18n.client.Messages;
@@ -107,9 +108,12 @@
throw new UnableToCompleteException();
}
- TreeLogger deprecatedLogger = logger.branch(TreeLogger.TRACE,
- "Checking for deprecated metadata", null);
-
+ TreeLogger deprecatedLogger = null;
+ if (GenUtil.warnAboutMetadata()) {
+ deprecatedLogger = logger.branch(TreeLogger.TRACE,
+ "Checking for deprecated metadata", null);
+ }
+
// Link current locale and interface type to correct implementation class.
String generatedClass = AbstractLocalizableImplCreator.generateConstantOrMessageClass(
logger, deprecatedLogger , context, locale, targetClass);
diff --git a/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java b/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java
index 556d9dc..e8c04c9 100644
--- a/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java
+++ b/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java
@@ -26,6 +26,7 @@
import com.google.gwt.core.ext.typeinfo.JPrimitiveType;
import com.google.gwt.core.ext.typeinfo.JType;
import com.google.gwt.core.ext.typeinfo.TypeOracle;
+import com.google.gwt.dev.generator.GenUtil;
import com.google.gwt.dev.generator.NameFactory;
import com.google.gwt.dev.util.Util;
import com.google.gwt.http.client.Request;
@@ -99,11 +100,13 @@
throws UnableToCompleteException {
TypeOracle typeOracle = context.getTypeOracle();
- TreeLogger javadocAnnotationDeprecationBranch = logger.branch(
- TreeLogger.TRACE,
- "Scanning this RemoteService for deprecated annotations; "
- + "Please see " + RemoteServiceRelativePath.class.getName()
- + " for more information.", null);
+ TreeLogger javadocAnnotationDeprecationBranch = null;
+ if (GenUtil.warnAboutMetadata()) {
+ javadocAnnotationDeprecationBranch = logger.branch(TreeLogger.TRACE,
+ "Scanning this RemoteService for deprecated annotations; "
+ + "Please see " + RemoteServiceRelativePath.class.getName()
+ + " for more information.", null);
+ }
JClassType serviceAsync = typeOracle.findType(serviceIntf.getQualifiedSourceName()
+ "Async");
@@ -373,9 +376,11 @@
TreeLogger javadocAnnotationDeprecationBranch) {
String[][] metaData = serviceIntf.getMetaData(ENTRY_POINT_TAG);
if (metaData.length != 0) {
- javadocAnnotationDeprecationBranch.log(TreeLogger.WARN,
- "Deprecated use of " + ENTRY_POINT_TAG + "; Please use "
- + RemoteServiceRelativePath.class.getName() + " instead", null);
+ if (javadocAnnotationDeprecationBranch != null) {
+ javadocAnnotationDeprecationBranch.log(TreeLogger.WARN,
+ "Deprecated use of " + ENTRY_POINT_TAG + "; Please use "
+ + RemoteServiceRelativePath.class.getName() + " instead", null);
+ }
return metaData[0][0];
} else {
RemoteServiceRelativePath moduleRelativeURL = serviceIntf.getAnnotation(RemoteServiceRelativePath.class);
diff --git a/user/src/com/google/gwt/user/rebind/ui/ImageBundleGenerator.java b/user/src/com/google/gwt/user/rebind/ui/ImageBundleGenerator.java
index 258d001..34b9c68 100644
--- a/user/src/com/google/gwt/user/rebind/ui/ImageBundleGenerator.java
+++ b/user/src/com/google/gwt/user/rebind/ui/ImageBundleGenerator.java
@@ -23,6 +23,7 @@
import com.google.gwt.core.ext.typeinfo.JMethod;
import com.google.gwt.core.ext.typeinfo.NotFoundException;
import com.google.gwt.core.ext.typeinfo.TypeOracle;
+import com.google.gwt.dev.generator.GenUtil;
import com.google.gwt.user.client.ui.ImageBundle;
import com.google.gwt.user.client.ui.ImageBundle.Resource;
import com.google.gwt.user.rebind.ClassSourceFileComposerFactory;
@@ -455,7 +456,9 @@
if (imgNameAnn == null) {
// There is JavaDoc metadata but no annotation.
imgFileName = imgNameJavaDoc;
- logger.log(TreeLogger.WARN, MSG_JAVADOC_FORM_DEPRECATED, null);
+ if (GenUtil.warnAboutMetadata()) {
+ logger.log(TreeLogger.WARN, MSG_JAVADOC_FORM_DEPRECATED, null);
+ }
} else {
// There is both JavaDoc metadata and an annotation.
logger.log(TreeLogger.WARN, MSG_MULTIPLE_ANNOTATIONS, null);
diff --git a/user/test/com/google/gwt/user/rebind/ui/ImageBundleGeneratorTest.java b/user/test/com/google/gwt/user/rebind/ui/ImageBundleGeneratorTest.java
index e36b869..9b8a63a 100644
--- a/user/test/com/google/gwt/user/rebind/ui/ImageBundleGeneratorTest.java
+++ b/user/test/com/google/gwt/user/rebind/ui/ImageBundleGeneratorTest.java
@@ -16,6 +16,7 @@
package com.google.gwt.user.rebind.ui;
import com.google.gwt.core.ext.UnableToCompleteException;
+import com.google.gwt.dev.generator.GenUtil;
import com.google.gwt.dev.util.UnitTestTreeLogger;
import com.google.gwt.user.client.ui.ImageBundle.Resource;
import com.google.gwt.user.rebind.ui.ImageBundleBuilder.HasRect;
@@ -231,7 +232,9 @@
*/
public void testResourceNotFoundGivenLegacyJavaDoc() {
UnitTestTreeLogger.Builder b = new UnitTestTreeLogger.Builder();
- b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
+ if (GenUtil.warnAboutMetadata()) {
+ b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
+ }
b.expectError(
ImageBundleGenerator.msgCannotFindImageFromMetaData("from/metadata/notfound.png"),
null);
@@ -274,10 +277,12 @@
public void testResourcesFoundFromImageBundleInDefaultPackage()
throws UnableToCompleteException {
UnitTestTreeLogger.Builder b = new UnitTestTreeLogger.Builder();
- // Due to [2] below
- b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
- // Due to [4] below
- b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
+ if (GenUtil.warnAboutMetadata()) {
+ // Due to [2] below
+ b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
+ // Due to [4] below
+ b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
+ }
UnitTestTreeLogger logger = b.createLogger();
{
@@ -336,10 +341,12 @@
public void testResourcesFoundFromImageBundleInNonDefaultPackage()
throws UnableToCompleteException {
UnitTestTreeLogger.Builder b = new UnitTestTreeLogger.Builder();
- // Due to [2] below
- b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
- // Due to [4] below
- b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
+ if (GenUtil.warnAboutMetadata()) {
+ // Due to [2] below
+ b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
+ // Due to [4] below
+ b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
+ }
UnitTestTreeLogger logger = b.createLogger();
{
@@ -412,7 +419,9 @@
*/
public void testWarnOnUseOfLegacyJavaDoc() throws UnableToCompleteException {
UnitTestTreeLogger.Builder b = new UnitTestTreeLogger.Builder();
- b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
+ if (GenUtil.warnAboutMetadata()) {
+ b.expectWarn(ImageBundleGenerator.MSG_JAVADOC_FORM_DEPRECATED, null);
+ }
UnitTestTreeLogger logger = b.createLogger();
String imgName = getImageName(logger, new String[] {